我为冗长的帖子表示歉意。
我正在使用pyinstaller将Hello World程序从Python文件转换为独立的可分发可执行文件。我正在Windows 10企业版上使用pyinstaller 3.6。 Python代码是使用Spyder 4.0.1编写的(目前我无法更新至4.1.3)。
我已经创建了HelloWorld.py文件:
#! python3
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 30 12:27:20 2020
@author: DNICHOL3
"""
def main():
print("Hello World!")
if __name__ == "__main__":
main()
以及同一文件夹中的cli.py文件:
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 30 09:07 2020
@author: DNICHOL3
"""
# import HelloWorld
from HelloWorld.__main__ import main
if __name__ == '__main__':
main()
我正在使用–onefile –debug import –clean标志运行pyinstaller:
pyinstaller cli.py –onefile –debug imports --clean
然后我从dist文件夹运行cli.exe,并获得几个输出屏幕(导入xxx,#清除yyy,#还原zzz,#清理[2] aaa)。在此输出中嵌入以下几行:
HelloWorld not found in PYZ
Traceback (most recent call last):
File “cli.py”, line 10, in <module>
File “<frozen importlib.bootstrap>”, line 991, in _find_and_load
File “<frozen importlib.bootstrap>”, line 961, in _find_and_load_unlocked
File “<frozen importlib.bootstrap>”, line 219, in _call_with_frames_removed
File “<frozen importlib.bootstrap>”, line 991, in _find_and_load
File “<frozen importlib.bootstrap>”, line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named ‘HelloWorld’
[21600] Failed to execute script cli
查看warn-cli.txt表明HelloWorld确实缺失:
Missing module named ‘HelloWorld.__main__’ imported by C:\Users\dnichol3\python\Utilities\cli.py (top-level)
和cli.spec似乎表明PYZ中缺少HelloWorld:
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
执行生成的cli.exe遇到错误消息:
File “cli.py”, line 10, in <module>
ModuleNotFoundError: No module named ‘HelloWorld’
我已经阅读了pyinstaller文档(出现错误时)。我试图通过使用–hidden_import标志将HelloWorld.py包含到我的pyinstaller命令中,但这始终以pyinstaller结尾:错误:无法识别的参数:--hidden_import。而且,无论是否在hidden_import和HelloWorld之间使用等号,也不管是否使用.py文件扩展名。
我尝试了其他一些堆栈溢出建议(https://stackoverflow.com/a/46894037/12344177,https://stackoverflow.com/a/41869771/12344177和https://stackoverflow.com/a/47337389/12344177),但没有用。 任何帮助将不胜感激。
答案 0 :(得分:0)
我认为这不是pyinstaller问题,但属于您的进口产品。尝试不使用.__main__
的cli.py,这意味着您要从HelloWorld.py导入main()。
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 30 09:07 2020
@author: DNICHOL3
"""
# import HelloWorld
from HelloWorld import main
if __name__ == '__main__':
main()