我在Windows Server 2012R2上,试图在virtualenv中使用py2exe编译脚本,并且每当其中一个应用程序脚本试图“导入distutils”时我就会遇到问题(在我的情况下,它在第3个内部的某个地方) -party library,但我在这里减少了问题。)
重现的步骤:
创建virtualenv
virtualenv venv
call venv\Scripts\activate
在virtualenv
中安装py2exeeasy_install --always-unzip py2exe-0.6.9.win64-py2.7.amd64.exe
创建setup.py
from distutils.core import setup
try:
import py2exe
except:
pass
setup(
console=[
'py2exe_distutils.py'
]
)
创建py2exe_distutils.py
import distutils
运行py2exe
python setup.py py2exe
尝试运行生成的可执行文件
dist\py2exe_distutils.exe
它返回:
C:\Users\root\p\dist\library.zip\distutils\__init__.py:14: UserWarning: The virtualenv distutils package at %s appears to be in the same location as the system distutils?
Traceback (most recent call last):
File "py2exe_distutils.py", line 6, in <module>
import distutils
File "distutils\__init__.pyc", line 25, in <module>
ImportError: cannot import name dist
当我直接运行脚本(python py2exe_distutils.py)时,脚本运行正常,即使是在virtualenv中也是如此。
我是否尝试执行py2exe不支持的操作,或者我的设置有问题?
答案 0 :(得分:1)
创建使用pandas 0.12.0的可执行文件时遇到了同样的问题。这对我有用:在创建可执行文件之前,从基础python安装中复制distutils
文件夹
robocopy C:\Python27\Lib\distutils venv\Lib\distutils /E /COPY:DAT
我在Windows 7 Professional上使用virtualenv 12.0.4和py2exe 0.6.6。可以找到一些额外的见解here。 This answer指出了我只是复制文件的方向。