构建安装程序并安装应用程序时,它会将所有软件包安装在lib
文件夹中,而我的代码则是从当前目录而不是lib
中选择导入。
如何使软件包与可执行文件位于同一目录中?
下面是我的脚本:
from cx_Freeze import setup, Executable
buildOptions = dict(excludes = ["tkinter"], includes =["idna.idnadata"], optimize=1)
setup(name = "SoftwareGateway" ,
version = "0.1" ,
description = "" ,
options =dict(build_exe = buildOptions),
executables = [Executable("main.py", base = base)])
答案 0 :(得分:1)
据我了解,cx_Freeze 5.1.1
(当前版本)或5.1.0
不能满足您的要求。
您可以使用以前的稳定版本cx_Freeze 5.0.2
,该稳定版本不会将软件包冻结在子目录lib
中。要降级到此cx_Freeze
版本,请运行
python -m pip install cx_Freeze==5.0.2
在cmd
终端中。
或者,您可以使用
升级到最新的开发版本cx_Freeze 6.0b1
,该版本也不会将软件包冻结在子目录lib
中。
python -m pip install cx_Freeze==6.0b1
但是,除了非常特殊的情况外,我实际上不明白为什么将软件包冻结到子目录lib
中应该是一个无法解决的问题。我建议您通过使用软件包的lib
属性,而不是更改__file__
版本,来让代码从cx_Freeze
su目录中选择导入。