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

StackOverflow https://stackoverflow.com/questions/1830304

Вопрос

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

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

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

Это было полезно?

Решение 3

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

Другие советы

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

  1. Просматривать http://sourceforge.net/projects/pywin32/files/ для URL-адреса нужного вам exe-файла
  2. Активируйте свою виртуальную среду
  3. Бегать easy_install http://PATH.TO/EXE/DOWNLOAD

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


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

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

В таком случае:

  1. Загрузите exe самостоятельно
  2. Активируйте свою виртуальную среду
  3. Бегать easy_install DOWNLOADED_FILE.exe

Я очень надеюсь, что попробовал «pip install», а не «easy_install», но это не сработало и, скорее всего, никогда не сработает (нужна ссылка).


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

Решено это, копировав файл pywin32.pth в мои пакеты с сайтами virtualenv и редактируя файл, чтобы указать на путь.

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

Для Python 2.7 или 3.x используйте pypiwin32.

pip install pypiwin32

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

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

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

Редактировать:Пока почистите это, похоже, все еще есть некоторые проблемы с установкой...

Мне вся эта ситуация порядком надоела, и я просто создал набор конвертированных колес ("wheel Convert <.exe>").Я постараюсь поддерживать их в актуальном состоянии для самой последней сборки, но сообщайте, если возникнут какие-либо проблемы.

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

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

установка по пунктам https://tr00st.co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top