我正在编写一个我正在编写的更大程序的安装程序,我正在使用CxFreeze将其转换为可执行文件,但是,当我运行.exe文件时,它崩溃了“import pip”行,并提出(如下所示),所以基本上我的问题是:是否可以在导入pip的应用程序上使用CxFreeze?
编辑: 以下是我正在使用的所有文件:
setup.py(V1):
from cx_Freeze import *
import os, pip
setup(name=("ARTIST"),
version = "1",
description = "ARTIST installation file",
executables = [Executable("Install ARTIST.py"), Executable("C:\\Python34\\Lib\\site-packages\pip\\__init__.py")],
)
setup.py(V2):
from cx_Freeze import *
import os, pip
setup(name=("ARTIST"),
version = "1",
description = "ARTIST installation file",
executables = [Executable("Install ARTIST.py"],
options = {"build_exe": {"packages":[pip]}}
)
编辑: 如果有人想查看我发布更大程序的网站,请点击以下链接: alaricwhitehead.wix.com/artist
EDIT3: 这是代码的副本: https://www.dropbox.com/s/uu46iynm8fr8agu/Install%20ARTIST.txt?raw=1
请注意:我不想发布链接,但直接发布时间过长。
答案 0 :(得分:2)
您的设置脚本中存在两个问题。第一个问题是您在packages
命令的build_exe
选项下指定了要包含在冻结应用程序中的额外模块:packages
用于指定您需要包含的应用程序包,对于外部模块(例如pip
),您需要使用includes
。第二个问题是你需要传递includes
模块字符串列表而不是模块本身:
setup(
name=("ARTIST"),
version="1",
description="ARTIST installation file",
options={
'build_exe': {
'excludes': [], # list of modules to exclude
'includes': ['pip'], # list of extra modules to include (from your virtualenv of system path),
'packages': [], # list of packages to include in the froze executable (from your application)
},
},
executables=[
Executable(
script='run.py', # path to the entry point of your application (i.e: run.py)
targetName='ARTIST.exe', # name of the executable
)
]
)