Vik*_*Vik 5 python executable compilation python-module cx-freeze
我想使用cx_freeze编译带有子模块的Python 3.3模块.
所以,我的dir结构是:
projectname/
__init__.py
submodule1/
__init__.py
bootstrap.py
script1.py
submodule11/
script2.py
submodule2/
...
Run Code Online (Sandbox Code Playgroud)
在__init__.py我导入
from submodule1 import bootstrap
Run Code Online (Sandbox Code Playgroud)
并从引导程序
import submodule1.submodule11.script2
Run Code Online (Sandbox Code Playgroud)
如果我运行init文件,一切都很好,并且正确执行带有子模块导入的脚本.
当我编译它时,我使用这个setup.py:
from cx_Freeze import setup,Executable
import sys
includes = []
excludes = ['Tkinter']
packages = ['submodule1', 'submodule2']
base = "Win32GUI"
setup(
name = 'myapp',version = '0.1',description = 'app',author = 'user',
options = {'build_exe': {'excludes':excludes,'packages':packages}},
executables = [Executable('__init__.py',base=base)]
)
Run Code Online (Sandbox Code Playgroud)
并在'projectname'目录中运行脚本.
但是,如果我启动应用程序,我会ImportError: no module named 'submodule1.submodule11'从错误对话框中获取.
这是真的:在library.zip中,这个子模块不存在.
我做错了什么?
所以,我找到了答案:每个模块的__init__.py文件夹中都必须有一个文件,这样 python 就会知道它是一个包,而不仅仅是某个文件夹。现在我编译我的项目。
| 归档时间: |
|
| 查看次数: |
2430 次 |
| 最近记录: |