2012-05-21 2 views
1

내 프로젝트에서 .exe를 만들려고하는데 외부 라이브러리를 포함하는 lib 하위 패키지를 추가 한 후 py2exe가 실패한 것 같습니다. 여기하위 패키지의 파일이 고려되지 않았습니다.

내 프로젝트 설정 방법입니다 :

C:. 
¦ LICENSE 
¦ README.markdown 
¦ requirements.txt 
¦ run.sh 
¦ setup.py 
¦ TODO 
¦ 
+---data 
¦ +---input 
¦ +---output 
+---doc 
¦ 
+---facemovie 
¦ ¦ Eye.py 
¦ ¦ Face.py 
¦ ¦ Facemovie.py 
¦ ¦ Facemoviefier.py 
¦ ¦ FaceParams.py 
¦ ¦ Guy.py 
¦ ¦ training_types.py 
¦ ¦ __init__.py 
¦ ¦ 
¦ +---lib 
¦   exif.py 
¦   __init__.py 
¦ 
+---test 
     context.py 
     exif_test.py 
     face_script.py 
     test_script.py 
     __init__.py 

내가 테스트 패키지를 포함하는 내 EXE 파일로 문서 및 데이터 폴더도 원하지 않는다. 내 실행 파일의 루트는 facemovie 패키지 여야합니다. 당신이 볼 수 있듯이, 내 응용 프로그램의 주요 항목 파일 Facemovifier.py

from distutils.core import setup 
import py2exe, sys, os 
import facemovie 

sys.argv.append('py2exe') 


setup(
    name = "Facemovie", 
    url = "https://github.com/jlengrand/FaceMovie", 
    packages=['facemovie', 'facemovie.lib'], 
    options = {'py2exe': {'bundle_files': 1, 'includes': ['numpy', 'facemovie.lib.exif'] } }, 
    console=['facemovie/Facemoviefier.py'], 
    zipfile = None, 
) 

입니다 :

나는 다음 내 setup.py 파일을 통해 실행 파일을 만들려고하고 있습니다. lib 하위 패키지를 추가 할 때까지 모든 것이 잘 돌아가고있었습니다. 당신이 볼 수 있듯이

running install 
running build 
running build_py 
copying facemovie\Eye.py -> build\lib\facemovie 
copying facemovie\Face.py -> build\lib\facemovie 
copying facemovie\Facemovie.py -> build\lib\facemovie 
copying facemovie\Facemoviefier.py -> build\lib\facemovie 
copying facemovie\FaceParams.py -> build\lib\facemovie 
copying facemovie\Guy.py -> build\lib\facemovie 
copying facemovie\training_types.py -> build\lib\facemovie 
copying facemovie\__init__.py -> build\lib\facemovie 
copying facemovie\lib\exif.py -> build\lib\facemovie\lib 
copying facemovie\lib\__init__.py -> build\lib\facemovie\lib 
running install_lib 
running install_egg_info 
Removing C:\Python27\Lib\site-packages\Facemovie-0.4-py2.7.egg-info 
Writing C:\Python27\Lib\site-packages\Facemovie-0.4-py2.7.egg-info 
running py2exe 
....... 
Adding python27.dll as resource to C:\Users\jll\perso\workspace\FaceMovie\dist\Facemoviefier.exe 
The following modules appear to be missing 
['Carbon', 'Carbon.Files', 'Numeric', 'Pyrex.Compiler.Main', '__svn_version__', '_curses', '_scproxy', 'configparser', ..., 'lib.exif'] 

, lib 디렉토리/EXIF ​​파일이 실제로 복사되지만 나중에 찾을 수 없습니다 나는 py2exe에 명령을 실행하면

, 여기에 출력의 일부입니다.

내가 실행 파일을 실행하려고

, 여기에 출력됩니다 :

C:\Users\jll\perso\workspace\FaceMovie\dist>Facemoviefier. 
Traceback (most recent call last): 
    File "Facemoviefier.py", line 12, in <module> 
    File "zipextimporter.pyc", line 82, in load_module 
    File "Facemovie.pyc", line 10, in <module> 
ImportError: No module named lib.exif 

을 그리고 여기에 오류가 발생 Facemovie.py의 라인이다 : 나는 여러 가지를 시도하고

import lib.exif as exif 

은 마지막 날에는 많은 문서를 읽었지만 문제가 무엇인지 이해할 수 없었습니다. 나는 .py 파일을 필요로하며 My Python 코드는 아무 문제없이 실행됩니다.

나는 정말로 어떤 힌트도 주시면 감사하겠습니다.

감사합니다.

편집 :

마지막으로 문제를 해결했다. @mata가 올바른 해결책을 가졌지 만 (여기에 게시하기 전에이 줄을 사용해 보았지만).

실제 문제는

C:\Python27\Lib\site-packages 

내 평 파일을 복사하여 시작 이는 py2exe 분명히 EXE 파일을 생성하는 데 사용할 사실에서 오는했다. 생성하는 동안 .pyc로 컴파일됩니다.

사이트 패키지 폴더에 이미 .pyc 파일이 (가) 있었기 때문에 실행 파일을 추가로 만들면 은 컴파일을 건너 뜁니다.

건물을 만들기 전에 개미 대상을 사용하여 파일을 제거하는 중 일시적인 해결책을 찾았지만이 파일이 좋은 파일인지 아닌지 궁금합니다.

안정 상태가 될 때까지 py2exe가 사이트 패키지에 아무것도 복사하지 않아야합니까?

답변

1

대신 :

import lib.exif as exif 

시도 : 도움을

import facemovie.lib.exif as exif 
# or 
from facemovie.lib import exif 
+0

감사합니다. 나는 이미 변경하지 않고 두 가지 모두 시도했다. 나에게는 정말로 이상한 것 같은데, 누락 된 lib는 항상 lib.exif이다. – jlengrand

관련 문제