내 프로젝트에서 .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가 사이트 패키지에 아무것도 복사하지 않아야합니까?
감사합니다. 나는 이미 변경하지 않고 두 가지 모두 시도했다. 나에게는 정말로 이상한 것 같은데, 누락 된 lib는 항상 lib.exif이다. – jlengrand