PyInstaller와 함께 번들로 제공되는 코드는 로컬에 설치된 vtk 모듈을 가져올 수 없습니다 : ModuleNotFoundError
Nov 20 2020
간단한 파일 vtest.py에 pyinstaller를 적용하려고했습니다.
import vtk
print('Hello World')
창문에. 명령을 실행할 수 있습니다
py vtest.py
문제없이. 그러나 명령으로 exe를 생성하려고 할 때
pyinstaller vtest.py --onefile
실행 파일을 실행하려고하면 오류가 발생합니다.
Traceback (most recent call last):
File "vtest.py", line 1, in <module>
File "c:\users\djame\appdata\local\programs\python\python38\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "vtk.py", line 30, in <module>
File "importlib\__init__.py", line 127, in import_module
ModuleNotFoundError: No module named 'vtkmodules'
[11448] Failed to execute script vtest
여기에 설명 된대로 후크 파일을 변경하려고 시도 했지만 운이 없습니다.
답변
1 KroshkaKartoshka Nov 20 2020 at 05:09
Pyinstaller는이 가져 오기를 감지 할 수 없으므로 번들에 첨부하지 않습니다. 이것은 libs에서 덜 간단하게 가져 오기 때문에 발생합니다.
둘 이상의 솔루션이 있습니다.
코드의 어느 곳에서나
import
누락 된 모든 모듈에 대한 문을 추가 합니다. 새 모듈을 추가하면 가져 오는 새 모듈이 누락 될 수 있으므로 여러 번 반복해야 할 수 있습니다.사양 파일 또는 콘솔 명령의
hiddenimports
인수에 동일한 모듈 목록을 추가합니다 . 이 프로세스는 반복적 일 수도 있습니다.
누락 된 모듈의 또 다른 이유는 PyInstaller가 /usr/lib
. 모듈을 가져 와서 .__file__
.