Невозможно импортировать 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. Некоторое дополнительное понимание может быть найдено здесь. Этот ответ указал мне в направлении простого копирования файлов.

Другие вопросы по тегам