从python3.2项目运行cxfreeze二进制文件时,出现以下运行时错误:
/project/dist/project/distutils/__init__.py:13: UserWarning: The virtualenv distutils package at %s appears to be in the same location as the system distutils?
Traceback (most recent call last):
File "/home/chrish/.virtualenvs/project/lib/python3.2/distutils/__init__.py", line 19, in <module>
import dist
ImportError: No module named dist
相应地,在cxfreeze输出的缺少模块部分中,有几个
distutils
条目:? dist imported from distutils
? distutils.ccompiler imported from numpy.distutils.ccompiler
? distutils.cmd imported from setuptools.dist
? distutils.command.build_ext imported from distutils
? distutils.core imported from numpy.distutils.core
...
我尝试通过将distutils导入到我的主python文件中并将其添加到cxfreeze
setup.py
中,将distutils作为模块包括在内:options = {"build_exe": {"packages" : ["distutils"]} },
两种方法均无效。好像我已经以某种方式破坏了virtualenv [因为distutils看起来很基本,并且关于distutils的位置的警告],重复使用干净的virtualenv可以重复此问题。
可能值得注意的是,我通过运行
$VIRTUAL_ENV/build/cx-freeze/setup.py install
安装了cx-freeze,因为它不能在pip中干净地安装。 最佳答案
总结一下我的评论:
virtualenv中distutils
的副本正在做一些奇怪的事情,使cx_Freeze感到困惑。一种简单的解决方法是在virtualenv外部卡住,以便它使用distutils的系统副本。
在Ubuntu上,Python 2和3可以愉快地共存:只需使用python3
在Python 3上执行任何操作即可。在Python 3:python3 setup.py install
下安装cx_Freeze。
关于python - cxfreeze virtualenv内部缺少distutils模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14247130/