Как я могу использовать pywin32 с virtualenv без необходимости включать папку site-packages среды хоста?


Я работаю с PyInstaller под Python 2.6, который только частично поддерживается из-за беспорядка, созданного MS с их манифестом nonense, который теперь влияет на Python, так как теперь он скомпилирован MSVC8.

проблема в том, что поддержка встраивания манифеста зависит от pywin32 расширения для сборки, что является болью, потому что без включения папки site-packages хоста при создании virtualenv (в своем роде точка в среде сборки) я не могу найти способ установить необходимые расширения, чтобы они были доступны для PyInstaller.

кто-нибудь нашел решение этой проблемы?

5   51   2009-12-02 05:31:03

5 ответов:

Я нашел http://old.nabble.com/Windows:-virtualenv-and-pywin32--td27658201.html (теперь мертвая ссылка), которая предложила следующее решение:

  1. Обзор http://sourceforge.net/projects/pywin32/files/ для URL-адреса exe, который вы хотите
  2. активировать virtualenv
  3. выполнить easy_install http://PATH.TO/EXE/DOWNLOAD

это работает с современными версиями setuptools (около февраля 2014 года, сообщается tovmeod в Примечание.)


Если вы используете старую версию setuptools (или распространяете ее обратно в setuptools), вы можете получить это сообщение об ошибке:

ошибка: c:\users\blah\appdata\local\temp\easy_install-ibkzv7\pywin32-214.с Win32-py2.6.exe не является допустимым distutils Windows .exe

в этом случае:

  1. загрузите exe самостоятельно
  2. активировать virtualenv
  3. Run easy_install DOWNLOADED_FILE.exe

Я, скорее всего, попробовал "pip install", а не" easy_install", но это не сработало и, вероятно, никогда не будет (цитата необходима).


наконец, я нашел, но не тестировал решение в http://www.mail-archive.com/python-list@python.org/msg272040.html что означает:

решил эту проблему, скопировав pywin32.файл ПТГ на мой сайт-пакеты виртуальное окружение и редактирование файла, чтобы указать на путь.

Если другие варианты не работают для вас, может быть, это будет?

для Python 2.7 или 3.X использование pypiwin32.

pip install pypiwin32

хорошо, так как я должен был найти путь вперед, я импровизировал. Я внутренне создал репозиторий git с взломанной версией pywin32, которая будет установлена в virtualenv с использованием стандартного setup.py сценарий. Потребовалось много возни, чтобы заставить его работать правильно, но мне удалось загрузить его, и зависимый код теперь работает так, как мне нужно. Если люди считают, что это будет полезно для сообщества, пожалуйста, оставьте комментарий: если я получу достаточно, я постараюсь что-то добавить на свой github счет.

это, возможно, было улучшено с предыдущего ответа, так как я успешно установил pywin32 на песочнице на нескольких машинах без каких-либо конкретных "хаков" :

$ virtualenv sandbox
$ sandbox\scripts\activate
(sandbox) $ git clone https://github.com/Travis-Sun/pywin32.git
(sandbox) $ cd pywin32
(sandbox) $ python setup.py install

протестировано со следующей средой:

Edit: поцарапайте это сейчас, похоже, некоторые проблемы с установкой все еще...

Я довольно устал от всей ситуации, и просто создал набор преобразованных колес ("wheel convert <.> Я постараюсь сохранить их для самой последней сборки, но кричите, если есть какие-либо проблемы.

https://tr00st.co.uk/python/wheel/pywin32/

установку можно сделать легко используя Пип и указывая на пакет, соответствующий вашей версии и архитектуры. Например, для Python 3.5 / amd64:

pip установить https://tr00st.co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl

предостережение: процесс --upgrade в настоящее время не выполняется, так как процедура удаления не может очистить после себя (доступ запрещен при очистке win32api.pyd) - это только при удалении временного каталога, который можно удалить вручную. Простейший способ обойти это-удалить и переустановить вместо обновления, а затем вручную удалить временную папку.