当前位置: 首页 > 面试题库 >

cx-freeze找不到所有依赖项

袁旻
2023-03-14
问题内容

我有一个pythonhtml" target="_blank">脚本(2.7),顶部有一些“有趣的”导入。我最初想使用py2exe将其编译成一个我可以更容易分发的exe。

我已经放弃,正在尝试使用cx-
freeze。但是,我在那里也有问题。问题似乎是我添加到Python中的库(jinja2和restkit)。我在python目录./Lib/site-packages/Jinja2-2.6-py2.7.egg/jinja2和这里的./Lib/site-
packages/restkit-4.2.1-py2.7.egg/restkit中看到了它们。

这是我的脚本中的导入:

import datetime
from jinja2 import Environment, PackageLoader
from optparse import OptionParser
from datetime import date, timedelta
from restkit import Resource, BasicAuth, request

我正在使用带有cx-freeze的setup.py。这是setup.py:

from cx_Freeze import setup, Executable


packages  = ["restkit", "jinja2" , "restkit.client" ]
includes = []
includefiles = []
eggsacutibull = Executable(
    script = "myScript.py",
    initScript = None,
    targetName = "myScript.exe",
    compress = True,
    copyDependentFiles = True,
    appendScriptToExe = False,
    appendScriptToLibrary = False,
    icon = None
    )

setup(
        name = "myScript",
        version = "0.1",
        author = 'vickery',
        description = "MyScript description",
        options = {"build_exe": {"includes":includes, "include_files": includefiles, "packages": packages}},
        executables = [eggsacutibull]
        )

我像这样运行cxfreeze:

cxfreeze myScript.py --target-dir exe

我在我的构建中得到这个:

Missing modules:
? __pypy__ imported from jinja2.debug
? http_parser.http imported from restkit.client
? jinja2._debugsupport imported from jinja2.debug
? jinja2._markupsafe._speedups imported from jinja2._markupsafe
? jinja2.debugrenderer imported from jinja2.debug
? markupsafe imported from jinja2.utils
? pretty imported from jinja2.utils
? socketpool imported from restkit.conn

而且,当我尝试运行exe时,得到以下信息:

Traceback (most recent call last):
  File "c:\Python27\lib\site-packages\restkit-4.2.1-py2.7.egg\restkit\__init__.py", line 9, in <module>
    from restkit.conn import Connection
  File "c:\Python27\lib\site-packages\restkit-4.2.1-py2.7.egg\restkit\conn.py", line 14, in <module>
    from socketpool import Connector
ImportError: No module named socketpool
Traceback (most recent call last):
  File "c:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
    exec code in m.__dict__
  File "myScript.py", line 12, in <module>
ImportError: cannot import name Resource

编辑: 我现在像这样正确运行cxfreeze:

python setup.py build

我还向我的setup.py添加了socketpool:

packages = [ "restkit", "jinja2" , "restkit.client", "restkit.conn", "socketpool" ]

但是,当我尝试立即构建时,出现构建错误:

$ python setup.py build
running build
running build_exe
Traceback (most recent call last):
  File "setup.py", line 32, in <module>
    executables = [eggsacutibull]
  File "c:\python27\lib\site-packages\cx_Freeze\dist.py", line 365, in setup
    distutils.core.setup(**attrs)
  File "c:\python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "c:\python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "c:\python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "c:\python27\lib\distutils\command\build.py", line 127, in run
    self.run_command(cmd_name)
  File "c:\python27\lib\distutils\cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "c:\python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "c:\python27\lib\site-packages\cx_Freeze\dist.py", line 235, in run
    freezer.Freeze()
  File "c:\python27\lib\site-packages\cx_Freeze\freezer.py", line 570, in Freeze
    self.finder = self._GetModuleFinder()
  File "c:\python27\lib\site-packages\cx_Freeze\freezer.py", line 325, in _GetModuleFinder
    finder.IncludePackage(name)
  File "c:\python27\lib\site-packages\cx_Freeze\finder.py", line 534, in IncludePackage
    module = self._ImportModule(name, deferredImports)
  File "c:\python27\lib\site-packages\cx_Freeze\finder.py", line 274, in _ImportModule
    raise ImportError("No module named %r" % name)
ImportError: No module named 'socketpool'

我在这里感到困惑的是,我的脚本编译得很好。另外,我可以从python shell导入这些模块。例如:

$ python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import socketpool
>>> from restkit import Resource, BasicAuth, request
>>>

python如何解析与cxfreeze不同的模块?

Edit2: 从python我可以做到这一点:

>>> import socketpool
>>> print socketpool.__file__
c:\python27\lib\site-packages\socketpool-0.5.2-py2.7.egg\socketpool\__init__.pyc

这是寻找包裹的非标准地点吗?我可以使用PYTHONPATH强制cxfreez在那里寻找套接字池吗?

谢谢


问题答案:

万一有人碰到这个问题,问题似乎是cxfreeze不能很好地与鸡蛋配合使用。一旦我从鸡蛋中提取了代码(将其重命名为zip并解压缩),并创建了例如:Python27
\ Lib \ site-packages \ socketpool作为代码,然后运行该构建,一切似乎就正常了。

好像是hack。该洗澡了。



 类似资料:
  • 我正在使用本机库格式OCR,添加jar并将dll放入progfile\common文件中,尽管我遇到以下错误,请帮助我。。。。 ibrary.load不满意LinkError: C:\Program Files\Common Files:无法找到依赖库java.lang.ClassLoader$NativeLoader.load(Native Method)在oader.java:1751Clas

  • 我和我的朋友正在做一个Java maven项目,它的设置和我们从Git得到的项目是一样的。在我的设置中,Maven正确地导入了所有依赖项,但对于我的朋友,它找不到任何依赖项。 我们尝试过的事情: 右键单击project,单击maven并单击Reimport。 我们都可以上网,所以这也不是问题。而且,Maven在IntelliJ中设置为自动导入。

  • 当我从以下链接运行代码时,https://github.com/sagioto/lipreading/blob/master/lipreading-gui/src/main/java/edu/lipreading/gui/mainframe.java;我得到以下错误: 线程“Thread-6”java.lang.UnsatisfiedLinkError中出现异常:C:\users\harish r

  • 我最近安装了ImageMagick 6.3.9和JMagick 6.3.9。从这里通过和。 我在NetBeans中将添加到我的项目的库中,并将类路径设置为包含安装ImageMagick的文件夹(我还将放在其中)。 这就是我所做的一切。 然而,当我运行我的程序(它只声明一个并初始化它)时,我得到了以下错误: 为什么会这样,我该如何解决?

  • 我对Clojure和Leiningen是新来的。刚开始工作一个现有的项目。我拉了回购并执行了Lein运行的命令。它抱怨说: “在clojars中找不到项目arcType:service.jose:jar:0.1.0-快照(https://repo.clojars.org/)无法将项目arcType:service.jar:0.1.0-快照从/传输到enonic(https://repo.enoni

  • 问题内容: 我正在尝试获取Java类中的所有依赖关系,包括用于泛型参数化和局部变量类型的类。到目前为止,我发现的最佳框架是apache bcel。使用它,我可以轻松地从字节码中找到所有字段,方法参数和局部变量。基本上,除了泛型和局部变量类型以外的所有内容。例如,在第1行中,我只能使用bcel中的方法找到一个依赖项- ArrayList。它无法检测到List接口和Point类。不幸的是,我也尝试了t