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

2025-03-05 09:18:00
admin
原创
64
摘要:问题描述:Virtualenv 很棒:它让我保留多个不同的 Python 安装,这样不同项目的依赖项就不会全部堆在一起。但是,如果我想在 Windows 上安装一个打包为 .exe 安装程序的软件包,我该如何将其安装到虚拟环境中?例如,我有 pycuda-0.94rc.win32-py2.6.exe。当我运行...

问题描述:

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

但是,如果我想在 Windows 上安装一个打包为 .exe 安装程序的软件包,我该如何将其安装到虚拟环境中?例如,我有 pycuda-0.94rc.win32-py2.6.exe。当我运行它时,它会检查注册表,并找到一个可以安装到的 Python26,这是我的虚拟环境所基于的通用版本。

我怎样才能将其安装到虚拟环境中?


解决方案 1:

是的,你可以。你只需要

easy_install 二进制安装程序_built_with_distutils.exe

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

更新

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

解决方案 2:

我知道这是一个相当老的问题,而且比我即将讨论的工具更早,但为了 Google 的利益,我认为提一下是个好主意。easy_install 是 python 打包的害群之马。没有人愿意承认在 pip 流行的情况下使用它。此外,虽然玩注册表技巧最适合非标准 EXE 安装程序(有人自己构建了安装程序而不是使用 distutils,并检查注册表以查找安装路径),但现在对于标准 EXE 安装程序,有一种更好的方法 (c)。

pip install wheel
wheel convert INSTALLER.EXE
pip install NEW_FILE_CREATED_IN_LAST_STEP.whl

截至本文发布时,最近引入的 wheel 格式是 egg 格式的替代品,其作用大致相同。pip(虚拟环境中已安装的工具)也支持此格式。

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

解决方案 3:

我最终改编了一个脚本 ( 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 上,您需要管理员权限。

解决方案 4:

easy_install 能够安装 .exe 包,只要它们是使用 distutils 的 bdist_wininst 目标构建的,该目标涵盖了许多流行的包。但是,还有很多其他包不能安装(wxPython 就是我遇到过的一个问题)

解决方案 5:

您可以使用环境的 easy_install 来安装 PyCUDA。

dev-env-path/bin/easy_install pycuda

它将为您提供相同的版本 0.94rc。

在 Windows 上,easy_install.exe 将位于 Scripts 目录中。

解决方案 6:

如果是.msi,您可能能够使用 指定命令行选项msiexec。Python安装程序本身允许TARGETDIR,但我不确定 distutils 是否将其嵌入到分发安装程序中。

如果您使用的是.exe,我认为没有干净的方法。一种选择是使用 7Zip(或 winzip 等)之类的程序直接提取 exe 的内容,然后将相关文件夹复制到虚拟站点包文件夹中。例如,如果我提取“processing-0.5.2.win32-py2.5.exe”,我会找到一个文件夹“PLATLIB\processing”,我将其复制到虚拟环境路径并使用,不会出现任何运行时问题。(但我不确定它是否总是那么简单。)

解决方案 7:

您应该输入文件的路径并在其前面写上“python”。

然后它将在没有任何虚拟环境的情况下运行你的 Python 脚本。

谢谢。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2593  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1555  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   32  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   28  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   24  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用