我可以在virtualenvs中安装Python windows包吗?

Ned*_*der 125 python windows virtualenv

Virtualenv非常棒:它让我可以保留许多不同的Python安装,这样不同项目的依赖关系就不会全部集中在一起.

但是,如果我想在Windows上安装一个打包为.exe安装程序的软件包,我如何指导它安装到virtualenv?例如,我有pycuda-0.94rc.win32-py2.6.exe.当我运行它时,它会检查注册表,并且只找到一个要安装的Python26,这是我的virtualenv所基于的常见的.

如何指导它安装到virtualenv?

Pio*_*ost 201

是的你可以.所有你需要的是

easy_install binary_installer_built_with_distutils.exe

惊讶吗?看起来像使用distutils的Windows二进制安装程序将.exe和.zip组合成一个.exe文件.将扩展名更改为.zip,以查看它是有效的zip文件.我在阅读了我的问题的答案后发现了这一点我在哪里可以用psycopg2 for Windows下载二进制蛋?

UPDATE

正如Tritium21在他的回答中所说,你应该使用pip而不是easy_install.Pip无法安装distutils创建的二进制包,但它可以以新的轮子格式安装二进制包.您可以使用wheel包将旧格式转换为新格式,您必须先安装.

  • 这太妙了.希望我能不止一次地投票给你. (14认同)
  • 只是一个提示:开发人员可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/下载各种用于Windows的内置python包. (5认同)
  • 我同意,这很好.顺便说一句,如果你有7zip,你可以直接打开.exe,而不必将其重命名为zip. (2认同)

Tri*_*m21 70

我知道这是一个相当古老的问题,并且早于我将谈论的工具,但是为了Google,我认为提及它是一个好主意.easy_install是python包装的黑羊.没有人愿意承认使用新的热情.此外,虽然播放注册表技巧最适合非标准EXE安装程序(有人自己构建安装程序而不是使用distutils,并且正在检查注册表中的安装路径),现在有一个更好的方法(c)用于标准EXE安装程序.

pip install wheel
wheel convert INSTALLER.EXE
pip install NEW_FILE_CREATED_IN_LAST_STEP.whl
Run Code Online (Sandbox Code Playgroud)

最近在本文中介绍的车轮格式是鸡蛋格式的替代品,充当了同样的角色.pip(已经安装在virtualenv中的工具)也支持这种格式.

如果由于某种原因pip install WHEELFILE不起作用,请尝试wheel install WHEELFILE


Ned*_*der 40

我最终调整了一个脚本(http://effbot.org/zone/python-register.htm)来在注册表中注册Python安装.我可以选择Python 作为注册表中 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()
Run Code Online (Sandbox Code Playgroud)

使用您要注册的Python运行此脚本,它将被输入注册表.请注意,在Windows 7和Vista上,您需要管理员权限.

  • 这很棒; 感谢您与社区分享. (2认同)

小智 7

easy_install能够安装.exe软件包,只要它们是使用distutils的bdist_wininst目标构建的,它涵盖了许多流行的软件包.然而,还有很多其他的不是(wxPython是我一直在努力的)