cx_Freeze如何避免将软件包安装在lib文件夹中?

时间:2018-12-12 07:25:59

标签: python python-2.7 cx-freeze

构建安装程序并安装应用程序时,它会将所有软件包安装在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)])

1 个答案:

答案 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目录中选择导入。