更改虚拟环境中使用的Python版本

4 投票
3 回答
4388 浏览
提问于 2025-04-16 05:58

我有一个在虚拟环境中的项目,使用的是python2.6,但现在我想把它改成使用python2.7。有没有办法做到这一点,而不需要备份我的项目文件、重新创建适合的python版本的虚拟环境,然后再把我的文件复制回去?

这看起来手动操作并不复杂,但如果能自动化这个过程,那就非常有用了,这样我就可以在不同的python版本下轻松测试我的项目,同时仍然在虚拟环境中工作。

3 个回答

4

这虽然晚了三年,但希望能帮到其他人...

这个回答主要是针对Windows操作系统(7)作为主要开发平台的。以下是我建议的管理多个Python虚拟环境的步骤。

注意1: 你可能需要以管理员身份运行命令提示符。

注意2: 你可能需要为每个Python版本安装一个“setuptools”的版本;我不太确定,因为我还没遇到过这个问题。用哪个easy_install来安装virtualenv应该没关系。最新的virtualenv应该可以支持所有版本的Python(这是我的推测)。

注意3: Python的.msi安装程序会在Windows注册表中写入多个条目。所以如果你打算在多个Python版本下开发和测试,可能只想使用压缩包分发版。

  1. 设置一个环境变量(除了必需的变量,比如PYTHONPATH),叫做PYTHONHOME。PYTHONPATH变量应该引用PYTHONHOME变量。
  2. 安装你需要测试的每个Python版本,这只需要简单地将PythonX.X的代码解压到你选择的开发位置。
  3. 为了方便在Python版本之间切换,简单地为每个版本创建一个.bat文件,这样可以为你设置系统环境变量(PYTHONHOME)。这是我使用的方法。

    你可以在一个名为“SetPython2.8.bat”的.bat文件中使用以下脚本命令:

    setx /m PYTHONHOME "path\to\python\version2.8"

  4. 当你要创建虚拟[Python]环境时,执行特定的.bat文件,根据你想要的Python版本,比如上面的例子就是“SetPython2.8.bat”。

    右键点击,选择以管理员身份运行。

  5. 为每个Python虚拟环境创建一个额外的.bat文件,主要是为了激活。现在,当你需要为特定的Python环境安装某个库时,只需执行(以管理员身份)特定的.bat文件,然后安装库。

    以下是一组假设的命令,适用于名为“Activate_Python2.8_VEnv.bat”的脚本:

    title "VirtualEnv:Python2.8" set PATH_TO_WORKSPC="C:\path\to\workspace" cd %PATH_TO_WORKSPC%\VirtualEnvironments\python cd Python2.8 set "_OLD_VIRTUAL_PROMPT=$g" cmd /K Scripts\activate.bat 查看你的虚拟环境中的activate.bat文件,了解为什么我们设置了"_OLD_VIRTUAL_PROMPT"。

  6. 可选地,你也可以选择有一个主要的系统Python安装(如在1中所述)。不过,从灵活性来看,虚拟环境似乎是更好的选择。

  7. [欢迎改进]

这里有一个关于如何在Mac或Unix平台上安装不同Python版本的讨论

6

把你的项目移到虚拟环境文件夹外面。它们不应该放在里面,正是因为这个原因。

使用不同版本的Python可能会引入稍微不同的包,所以最好是创建一个新的虚拟环境,使用2.7版本,并安装你所有需要的依赖。然后当你想要测试不同的Python版本时,只需让你的脚本激活并使用正确的环境就可以了。

3

为了方便地在多个Python版本上测试一个项目,你可以使用tox这个工具。

撰写回答