2011-11-26 2 views
1

wxPython GUI를 작성했습니다. 현재 여러 목록이 포함 된 모듈 파일에 "가져 오기 데이터"를 사용하여 일부 위젯과 일부 기본값을 구성합니다.py2exe 컴파일 후 "가져 오기"기능을 유지하는 방법

하지만 python 설치없이 py2exe를 사용하여 전체 프로그램을 컴파일해야합니다. 이렇게하면 data.py 파일을 편집하여 사용자가 구성 기본값을 변경할 수 없게됩니다.

각 목록을 일련의 텍스트 문자열로 넣고 모든 것을 읽고 파싱 할 수 있지만, 은 파이썬이 이미 간단한 import 문으로 모든 것을 할 수있을 때 거대한 낭비처럼 보입니다.

나는 아마 XRC/XML 또는 ConfigParser 함께 할 아마 수 있지만, 파이썬을

또는 이와 유사한 data.txt로 수입의 정렬 할 수있는 쉬운 방법이 있어야한다 보인다 할이 일이! 그런 다음 py2exe가이 파일을 보관하면 data.txt 파일에 대해 편집 할 수없는 바이트 코드가 작성되지 않습니다.

제안 사항?

+0

'exec'모듈이 내가 찾고있는 것입니다. 목록 문을 텍스트 파일에두고 문자열로 파일을 읽은 다음 exec (string)을 사용하여 원하는 목록을 가져올 수 있습니다. (그리고 이것은 이미 내가 못생긴 XML에서 구현 한 것입니다. 오, 잘) – kmceng

+0

exec는 모듈이 아니며, 키워드/문장이고 python 3에서는 함수입니다. 조심해, 그냥 체크 [이] (http://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice) – joaquin

답변

0

가져온 파일은 py2exe에 의해 실행 파일에 번들로 제공됩니다. 갈 방법은 zip이나 Inno Setup에서 실행 파일로 패키징 한 구성 파일을 사용하는 것입니다. 구성 파일은 어느 순간에 변경되도록 만들어진 파일입니다. 반대로 사용자는 파이썬 스크립트를 수정해서는 안됩니다. 뭔가 '부정적인'경험이 예의 바른 말을하기 때문에 나는 당신에게 말한다.

내 프로그램 (실제로 모든 wxPython GUI 사용)에는 구성 데이터 (디렉토리 등)와 일부 전역을 포함하는 py 모듈이 있습니다. 이 모듈은 프로그램이 .ini 파일을 찾지 못하거나 ini 파일에 해당 매개 변수가 설정되지 않은 경우 기본 매개 변수를로드하는 데 사용됩니다. 그런 다음 inno setup으로 모든 것을 (exe와 보조 파일) 배포합니다.

+0

괜찮아,하지만 어떻게 하나 "가져 오기"않습니다 config.ini 파일? .py 파일을 가져올 때 각 var_name = [ 'a', 'b', 'cdata', 67 .....]은 텍스트 문자열 등을 구문 분석하지 않고도 파이썬 목록으로 멋지게 들어옵니다. (보안은 최종 사용자가 내부적이기 때문에 실제로는 문제가되지 않습니다.) – kmceng

+1

목록 및 사전 형태로 좀 더 구조화되었지만 수동으로 읽고 쓰기가 가능한 무언가를로드하거나 가져 오려면 한 가지 강력한 솔루션이 JSON을 사용하는 것입니다 파일. [ConfigObj] (http://www.voidspace.org.uk/python/configobj.html#introduction) 라이브러리는 파이썬 공식 파서의 대안이며 값 목록을 읽을 수 있습니다. – joaquin