Ufu*_*k A 4 python module pyinstaller
我在一个包中有两个彼此相邻的模块,如下所示:
main/
|--> __init__.py
|--> somePackageName/
|--> __init__.py
|--> module1.py
|--> module2.py
Run Code Online (Sandbox Code Playgroud)
在模块 module1.py 中,我使用以下语句导入 module2.py:
from .module1 import *
当我运行时python -m somePackageName.module1,脚本工作得很好(命令从包外部执行)
我现在想用 pyinstaller 构建一个 .exe。执行后pyinstaller module1.spec我得到错误:
ImportError:尝试在没有已知父包的情况下进行相对导入
[15800] 无法执行脚本 module1
旁注:当我尝试python module1.py从包内部运行时,我遇到了同样的错误。
Sidenote2:我需要使用隐藏导入和/或附加钩子目录吗?
先感谢您。
相对导入仅在包内有效。根据您的描述,我认为您正在将 module1.py 转换为 .exe,因此它不再位于包内。
您需要执行以下操作:
这会产生类似的结果:
main/
|--> runme.py
|--> __init__.py
|--> somePackageName/
|--> __init__.py
|--> module1.py
|--> module2.py
Run Code Online (Sandbox Code Playgroud)
你的 runme.py 会是这样的:
import module1.main
module1.main()
Run Code Online (Sandbox Code Playgroud)
然后你的 module1 导入将正常工作。
下一步是使用 pyinstaller 将 runme.py 打包为可执行文件。我刚刚测试过,效果很好。
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |