Я могу установить пакеты окон Python в virtualenvs?

Virtualenv является большим: это позволяет мне сохранить много отличных установок Python так, чтобы зависимости различных проектов не были все брошены вместе в общую груду.

Но если я хочу установить пакет в Windows, это упаковывается как .exe установщик, как я могу направить его для установки в virtualenv? Например, у меня есть pycuda-0.94rc.win32-py2.6.exe. Когда я выполняю его, это исследует реестр и находит, что только один Python26 устанавливает в, общий, из которого мой virtualenv базируется прочь.

Как я могу направить его для установки в virtualenv?

125
задан Ned Batchelder 17 July 2010 в 13:10
поделиться

4 ответа

В итоге я адаптировал сценарий (http://effbot.org/zone/python-register.htm) для регистрации установки Python в реестре. Я могу выбрать Python, который будет the Python в реестре, запустить программу установки Windows, затем вернуть реестр обратно:

# -*- encoding: utf-8 -*-
#
# script to register Python 2.0 or later for use with win32all
# and other extensions that require Python registry settings
#
# Adapted by Ned Batchelder from a script
# written by Joakim Löw for Secret Labs AB / PythonWare
#
# source:
# http://www.pythonware.com/products/works/articles/regpy20.htm

import sys

from _winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)

def RegisterPy():
    try:
        reg = OpenKey(HKEY_LOCAL_MACHINE, regpath)
    except EnvironmentError:
        try:
            reg = CreateKey(HKEY_LOCAL_MACHINE, regpath)
        except Exception, e:
            print "*** Unable to register: %s" % e
            return

    SetValue(reg, installkey, REG_SZ, installpath)
    SetValue(reg, pythonkey, REG_SZ, pythonpath)
    CloseKey(reg)
    print "--- Python %s at %s is now registered!" % (version, installpath)

if __name__ == "__main__":
    RegisterPy()

Запустите этот сценарий с Python, который вы хотите зарегистрировать, и он будет внесен в реестр. Обратите внимание, что в Windows 7 и Vista вам понадобятся привилегии администратора.

40
ответ дан 24 November 2019 в 00:57
поделиться

easy_install может устанавливать .exe пакеты, если они были собраны с использованием bdist_wininst цели distutils, которая охватывает многие популярные пакеты. Однако есть много других, которые не покрывают (wxPython - один из тех, с которым я столкнулся)

.
7
ответ дан 24 November 2019 в 00:57
поделиться

Если это .msi , вы можете указать параметры командной строки, используя msiexec . Сам установщик Python разрешает TARGETDIR , но я не уверен, что distutils включает это в установщики дистрибутива.

Если вы используете .exe , я не думаю, что есть чистый способ. Один из вариантов - использовать такую ​​программу, как 7Zip (или winzip и т. Д.), Чтобы напрямую извлечь содержимое exe, а затем скопировать соответствующие папки в папку виртуальных пакетов сайта. Например, если я извлекаю «processing-0.5.2.win32-py2.5.exe», я нахожу папку «PLATLIB \ processing», которую копирую по пути virtualenv и использую без каких-либо проблем во время выполнения. (Я не уверен, что это всегда так просто.)

0
ответ дан 24 November 2019 в 00:57
поделиться

Вы можете использовать easy_install среды для установки PyCUDA.

dev-env-path/bin/easy_install pycuda

он даст вам ту же версию 0.94rc.

В Windows easy_install.exe будет находиться в каталоге сценариев.

0
ответ дан 24 November 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: