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

新手上路,请多包涵

Virtualenv 很棒:它让我可以保留多个不同的 Python 安装,这样不同项目的依赖项就不会全部扔到一起。

但是,如果我想在 Windows 上安装一个打包为 .exe 安装程序的软件包,我该如何指示它安装到 virtualenv 中?比如我有pycuda-0.94rc.win32-py2.6.exe。当我运行它时,它会检查注册表,并发现只有一个 Python26 可以安装到其中,这是我的 virtualenv 所基于的常见的一个。

我如何指示它安装到 virtualenv 中?

原文由 Ned Batchelder 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
2 个回答

我最终改编了一个脚本( 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()

用你要注册的Python运行这个脚本,它就会进入注册表。请注意,在 Windows 7 和 Vista 上,您需要管理员权限。

原文由 Ned Batchelder 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

easy_install binary_installer_built_with_distutils.exe

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

更新

正如 Tritium21 现在在他的回答中指出的那样,您应该使用 pip 而不是 easy_install。 Pip 无法安装由 distutils 创建的二进制包,但它可以安装新 wheel 格式的二进制包。您可以使用 wheel 包从旧格式转换为新格式,您必须先安装它。

原文由 Piotr Dobrogost 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题