2012-07-23 4 views
1

Zed A.Shaw의 저서 'Learn Python'을 어려운 방법으로 사용하여 Python을 배우려고합니다. 에서 exercise 46. 저는 프로젝트 뼈대를 만들려고합니다 (즉, setup.py 파일을 만들고 모듈을 만드는 등). 그런 다음 프로젝트를 만드십시오.Python : setup.py에 스크립트의 exe 파일을 포함하는 방법

필자의 시스템에서 실행 가능한 bin 디렉토리에 스크립트를 넣어야합니다. 간단한 Hello World! 스크립트를 작성하여 cxfreeze을 사용하여 .exe 파일로 변환했습니다.

그러나 setup.py 파일을 설치하려고 할 때 (즉, cmd에 python setup.py install을 입력하면)이 .exe 파일을 설치할 수 없으며 대신 script.py 스크립트 만 설치할 수 있습니다. 어떻게 설치할 수 있습니까? exe 파일. 이 내 setup.py 파일입니다

try: 
    from setuptools import setup 
except ImportError: 
    from distutils.core import setup 

config = { 
    'description': 'First project',#ex46 
    'author': 'author',# 
    'url': '',#N/A 
    'download_url': '',#N/A 
    "author_email": "[email protected]" 
    'versio': '3.1', 
    'install_requires': ['nose'], 
    'packages': ['skeleton\quiz46','skeleton\\tests'], 
    'scripts': ['skeleton\\bin\helloscript.py','skeleton\\bin\helloscript.exe'], 
    'name': 'quiz46' 
} 

그러나 이것은 나에게 다음과 같은 오류 제공 : 나는 또한 골격 \ 빈 \의 helloscript.exe 퍼팅 시도

UnicodeDecodeError 

를하지만 나에게 비슷한 오류를 제공합니다 !

내 OS는 Windows 7이고 Python 3.1을 사용하고 있습니다.

또 내가 원하는 것은 setup.py가 내 .exe 파일을 설치하는 것입니다. 단지 스크립트가 아닙니다.

+1

오류가 표시 될 때 추적 코드 전체를 포함 시키면 문제를 진단하는 데 도움이됩니다. 또한, 식별 정보를 제거하기 위해 setup.py를 편집 한 것 같습니다. 해당 데이터에 오류가있을 수 있습니다. –

답변

4

script 옵션은 텍스트 파일을 제외한 모든 것을 처리하지 못합니다. distribute (aka setuptools)의 소스 코드를 살펴본 경우 write_script 명령은 파이썬 스크립트 이외의 다른 내용이고 파이썬 3을 사용하는 경우 encode('ascii') 내용을 시도합니다. cxfreeze exe는 텍스트 파일이 아닌 바이너리 파일이며, 이 문제를 일으킬 수 있습니다.

entry_points={'console_scripts':['helloscript = helloscript:main'] } 

console_script 자동으로 원래 helloscript.py 스크립트를 감싸고 만듭니다 :

설치 과정에서 실행 스크립트를 포함 setuptools을 얻을 수있는 쉬운 옵션은 setup.py 오히려 scripts보다에 entry_points 옵션을 사용하는 것입니다 exe (Windows)을 설치하고 Python의 Script 디렉토리에 설치하십시오. cxfreeze과 같은 것을 사용할 필요가 없습니다.

+0

이제는 왜 작동하지 않는지 압니다! – user1544624

+0

하지만 entry_points를 내 setup.py 파일에 넣으려고했는데 한 번 설정해 둡니다. 일단 설정의 바깥에서.하지만 여전히 나에게 똑같은 결과를 준다. 나는 잘못했다고 생각한다! – user1544624

+1

'cxfreeze' 바이너리 파일을 사용하려고하는 것처럼 들립니다. 'setup.py'에서 참조를 제거해야합니다. 'entry_points''console_scripts'는 원래의 파이썬 스크립트 내에서 callable을 가리키고 있습니다. 그것을 이해하기 위해 setuptools entry_points (http://packages.python.org/distribute/setuptools.html?highlight=console_script#automatic-script-creation)의 문서를 읽으십시오. 그것이 제드가 당신에게하기를 원하는 것입니다. :-) –

관련 문제