ImportError:无法导入名称包

姆本哈利马

我正在使用cx_Freeze版本5.1.1,并且我有一个python 2.7.9应用程序可以使用cx_Freeze进行打包。该应用程序正在使用python'requests'模块(请求的版本为2.18.4)

这是我的cx_Freeze setup.py文件(请注意,我在要包含的软件包中特别包含“请求”):

from cx_Freeze import setup, Executable
import sys

from cx_Freeze import setup, Executable

packages_to_include =['lib','lib/DB','encodings.ascii','requests']

buildOptions = dict(
    optimize=1,
    excludes = ['tkinter'],
    bin_includes = [
        'libcrypto.so.1.0.0',
        'libcrypto.so.10',
        'libgssapi_krb5.so.2',
        'libk5crypto.so.3',
        'libkeyutils.so.1',
        'libssl.so.1.0.1e',
        'libssl.so.10'
    ],
    includes = packages_to_include,
    packages= ['urllib3','idna']
)

executables = [
    Executable(
        'workapp.py',
        targetName = 'workapp'
    )
]

setup(
    name='Sample Flask App',
    version = '0.1',
    description = 'Sample Flask App',
    #requires = ["requests"],
    options = dict(build_exe = buildOptions),
    executables = executables
)

构建成功完成了创建可执行文件,但是在运行应用程序时出现以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/__startup__.py", line 14, in run
    module.run()
  File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/Console.py", line 26, in run
    exec(code, m.__dict__)
  File "vaas.py", line 2, in <module>
    import requests
  File "/usr/local/lib/python2.7/site-packages/requests/__init__.py", line 113, in <module>
    from . import packages
ImportError: cannot import name packages

我想这可能是我的cx_Freeze设置或请求存在问题,但是由于我告诉cx_Freeze包含“请求”,因此应该可以。我检查了构建目录(cx_Freeze构建的请求模块定义了“包”,我可以找到它:

[user@centos-vm]$ ls build/exe.linux-x86_64-2.7/lib/requests/packages/
chardet  idna  urllib3

任何帮助深表感谢!

姆本哈利马

找到了解决此问题的方法:

编辑:

/usr/local/lib/python2.7/site-packages/requests/__init__.py

并注释掉:

from . import packages

确实很奇怪。我的未冻结应用程序运行正常,但是使用cx_freeze时需要上述解决方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章