Невозможно импортировать distutils из скрипта, скомпилированного с py2exe
Я на Windows Server 2012R2, пытаюсь скомпилировать сценарий с py2exe в рамках virtualenv, и у меня возникают проблемы, когда один из сценариев приложения пытается "импортировать distutils" (в моем случае это где-то внутри сторонней библиотеки, но я уменьшил проблему здесь).
Действия по воспроизведению:
Создать виртуал
virtualenv venv call venv\Scripts\activate
Установите py2exe внутри virtualenv
easy_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, или что-то не так с моей настройкой?
1 ответ
У меня была такая же проблема при создании исполняемого файла, который использовал панды 0.12.0. Это сработало для меня: прежде чем создавать исполняемый файл, скопируйте distutils
папка с базовой установкой python
robocopy C:\Python27\Lib\distutils venv\Lib\distutils /E /COPY:DAT
Я использую virtualenv 12.0.4 и py2exe 0.6.6 на Windows 7 Professional. Некоторое дополнительное понимание может быть найдено здесь. Этот ответ указал мне в направлении простого копирования файлов.