是否可以使用 pip 模块在 python 3 项目中使用 cx_freeze ?

Posted

技术标签:

【中文标题】是否可以使用 pip 模块在 python 3 项目中使用 cx_freeze ?【英文标题】:Is it possible to use cx_freeze on a python 3 project using the pip module? 【发布时间】:2016-02-20 19:16:21 【问题描述】:

我正在为我正在编写的一个更大的程序编写一个安装程序,我正在使用 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]
      )

这会导致setup.bat 文件中出现错误:

编辑: 如果有人想查看我发布更大程序的网站,这里是链接: alaricwhitehead.wix.com/artist

编辑2: 这是我使用 py2exe 时遇到的错误:

编辑3: 这是代码的副本: https://www.dropbox.com/s/uu46iynm8fr8agu/Install%20ARTIST.txt?raw=1

请注意:我本来不想发链接,但是直接发太长了。

【问题讨论】:

能否请您发布您的设置文件 @DeliriousSyntax 看看我的编辑 cx_Freeze 使用setup.py 文件将程序转换为可执行文件。这是我要的文件。 How to create a cx_Freeze setup file 我觉得还是直接粘贴到setup.py中比较好,后面的人更容易在这里获得所有相关信息。死链接不好玩。 @DeliriousSyntax 看看我的编辑 【参考方案1】:

您的安装脚本中有两个问题。第一个问题是您在build_exe 命令的packages 选项下指定了要包含在冻结应用程序中的额外模块: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
        )
    ]
)

【讨论】:

您还应该在代码上方说明为什么它不起作用或如何修复它 我以为我确实做到了。可能从我当地的编辑那里复制和粘贴删除了解释。我会在一分钟内添加它。 是的,在编辑帖子后不知何故被删除了,我重新添加了它,重新措辞并希望能澄清问题。 好的,谢谢,我会调查一下。当 OP 测试你的答案时,我会奖励你。 你能分享你试图冻结的python脚本吗?否则我不知道为什么它不起作用,因为安装脚本应该是“好的”

以上是关于是否可以使用 pip 模块在 python 3 项目中使用 cx_freeze ?的主要内容,如果未能解决你的问题,请参考以下文章

通过 pip (PyPI) 安装 Python 实时依赖项 [重复]

如何用pip为Python3安装模块

如何用pip为Python3安装模块

如何在 Ubuntu 18 上为 python 3.7 安装 pip?

Python模块Pygame安装

如何用pip为Python3安装模块