Virtualenv великолепен: он позволяет мне хранить несколько отдельных установок Python, чтобы зависимости разных проектов не были собраны вместе в общую кучу.
Но если я хочу установить пакет в Windows, который упакован как установщик .exe, как я могу направить его для установки в virtualenv? Например, у меня есть pycuda-0.94rc.win32-py2.6.exe. Когда я запускаю его, он проверяет реестр и находит только один Python26 для установки, общий, на котором основан мой virtualenv.
Как я могу направить его на установку в virtualenv?
python
windows
virtualenv
Нед Батчелдер
источник
источник
Ответы:
Да, ты можешь. Все, что тебе нужно
Удивлены? Похоже, двоичные установщики для Windows, созданные с помощью distutils, объединяют .exe с .zip в один файл .exe. Измените расширение на .zip, чтобы убедиться, что это действительный zip-файл. Я обнаружил это после прочтения ответов на свой вопрос. Где я могу скачать двоичные яйца с помощью psycopg2 для Windows?
ОБНОВИТЬ
Как отметил Tritium21 в своем ответе, в настоящее время вы должны использовать pip вместо easy_install. Pip не может устанавливать двоичные пакеты, созданные distutils, но он может устанавливать двоичные пакеты в новом формате wheel . Вы можете конвертировать из старого формата в новый, используя пакет wheel , который вам нужно сначала установить.
источник
Я знаю, что это довольно старый вопрос, и он появился еще до тех инструментов, о которых я собираюсь говорить, но ради Google, я думаю, что было бы неплохо упомянуть об этом. easy_install - это черная овца упаковки Python. Никто не хочет признавать, что использовал его с новой популярностью. Кроме того, хотя трюки с реестром лучше всего подходят для нестандартных установщиков EXE (кто-то сам построил установщик вместо использования distutils и проверяет реестр на предмет пути установки), теперь есть лучший способ (c) для стандартных установщиков EXE ,
Формат колеса, представленный недавно в этой публикации, является заменой формата яйца, выполняя почти ту же роль. Этот формат также поддерживается pip (инструмент, уже установленный в вашем virtualenv).
если по каким-то причинам
pip install WHEELFILE
не работает, попробуйтеwheel install WHEELFILE
источник
wheel install WHEELFILE
, ответ отредактирован, чтобы указать на существование этого. Отладка конкретной проблемы для кого-то не является чем-то тривиальным в комментариях SO.В итоге я адаптировал сценарий ( http://effbot.org/zone/python-register.htm ) для регистрации установки Python в реестре. Я могу выбрать Python в качестве Python в реестре, запустить установщик Windows, а затем вернуть реестр:
Запустите этот скрипт с Python, который вы хотите зарегистрировать, и он будет внесен в реестр. Обратите внимание, что в Windows 7 и Vista вам потребуются права администратора.
источник
regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
easy_install может устанавливать пакеты .exe, если они были собраны с использованием цели distutils bdist_wininst, которая охватывает многие популярные пакеты. Однако есть много других, которых нет (wxPython - это тот, с которым я боролся)
источник
Вы можете использовать easy_install среды для установки PyCUDA.
он даст вам ту же версию 0.94rc.
В Windows easy_install.exe будет находиться в каталоге сценариев.
источник
Если это
.msi
, вы можете указать параметры командной строки, используяmsiexec
. Сам установщик Python позволяетTARGETDIR
, но я не уверен, что distutils запекает это в установщиках дистрибутива.Если вы используете
.exe
, я не думаю, что есть чистый способ. Один из вариантов - использовать такую программу, как 7Zip (или winzip и т. Д.), Чтобы напрямую извлечь содержимое exe, а затем скопировать соответствующие папки в папку виртуальных пакетов сайта. Например, если я извлекаю «processing-0.5.2.win32-py2.5.exe», я нахожу папку «PLATLIB \ processing», которую копирую по пути virtualenv и использую без каких-либо проблем во время выполнения. (Я не уверен, что это всегда так просто.)источник