如何在Windows上运行多个Python版本

Bil*_*rat 158 python windows compatibility python-2.x python-3.x

我的机器上安装了两个版本的Python(版本2.6和2.5).我想为一个项目运行2.6,为另一个项目运行2.5.

如何指定要使用的内容?

我正在使用Windows XP SP2.

aod*_*odj 123

运行不同的Python副本就像启动正确的可执行文件一样简单.你提到你已经从命令行启动了一个python实例,只需输入即可python.

这在Windows下的作用是搜索%PATH%环境变量,检查可执行文件,批处理文件(.bat),命令文件(.cmd)或其他一些可运行的可执行文件,它们与给定的名称相匹配.当它找到要运行的正确文件时,就会这样做.

现在,如果你已经安装了两个python版本2.5和2.6,那么路径将包含它们的两个目录,类似于PATH=c:\python\2.5;c:\python\2.6Windows ,它会在找到匹配时停止检查路径.

您真正需要做的是明确调用一个或两个应用程序,例如c:\python\2.5\python.exec:\python\2.6\python.exe.

另一种方法是创建一个相应python.exe的快捷方式,调用其中一个python25和另一个python26; 然后python25,您只需在命令行上运行即可.

  • 如何创建该快捷方式 (30认同)
  • 当您在Windows中时,导航到包含要为其创建快捷方式的python版本的文件夹,然后右键单击并创建快捷方式.然后,您可以重命名它. (8认同)
  • 如果快捷方式不起作用,您可以像@FJ所说的那样,只需复制和重命名即可.如果做不到这一点,您可以在命令行上使用"mklink"创建符号链接. (6认同)
  • 难道最好的方法是创建一个名为python25和python26的bat文件并使这些调用成为合适的版本吗?然后,您需要做的就是将这两个bat文件放在他们的二进制文件旁边. (5认同)
  • 抱歉,我找到了一个很长的死信,但是如何在不使用.lnk扩展名的情况下使快捷方式起作用? (3认同)
  • @NathanTornquist - 我只是想找出同样的问题,我能想到的最好方法是制作可执行文件的副本并重命名它们而不是创建快捷方式。 (2认同)
  • @AlaaM。在 bat 文件中,您需要像这样调用 python 可执行文件:“c:\path\to\python.exe %*”。`%*` 会导致将给 bat 文件的任何参数传递给 python 解释器。 (2认同)

Pio*_*ost 87

为问题添加另外两个解决方案:

  • 使用pylauncher(如果您有Python 3.3或更新版本,则不需要安装它,因为它已经包含Python)并且要么将shebang行添加到您的脚本中;

#! c:\[path to Python 2.5]\python.exe- 对于希望使用Python 2.5运行
#! c:\[path to Python 2.6]\python.exe的脚本 - 对于希望使用Python 2.6运行的脚本

或者代替运行python命令运行pylauncher命令(py)specyfing你想要哪个版本的Python;

py -2.6- 版本2.6
py -2- 最新安装的版本2.x
py -3.4- 版本3.4
py -3- 最新安装的版本3.x.

virtualenv -p c:\[path to Python 2.5]\python.exe [path where you want to have virtualenv using Python 2.5 created]\[name of virtualenv]

virtualenv -p c:\[path to Python 2.6]\python.exe [path where you want to have virtualenv using Python 2.6 created]\[name of virtualenv]

例如

virtualenv -p c:\python2.5\python.exe c:\venvs\2.5

virtualenv -p c:\python2.6\python.exe c:\venvs\2.6

那么你可以激活第一个并使用Python 2.5这样做
c:\venvs\2.5\activate
,当你想切换到Python 2.6时

deactivate  
c:\venvs\2.6\activate
Run Code Online (Sandbox Code Playgroud)

  • 从3.3版开始,Pylauncher与Python一起发布 - 请参阅http://www.python.org/download/releases/3.3.0/.另外我认为Vinay Sajip的实现不仅仅是原型的实现. (3认同)
  • 稍微好一点:以 UNIX 风格编写 shebang 行;启动器知道如何解析它们。因此,当使用“py.exe”运行时,“#!/usr/bin/env python2.7”将找到安装的最新 2.7 解释器,无需其他参数。 (2认同)

pep*_*epr 49

从Python 3.3开始,有适用于Windows的官方Python启动器(http://www.python.org/dev/peps/pep-0397/).现在,您可以使用它#!pythonX来确定Windows上所需的解释器版本.在我的另一条评论中查看更多详情或阅读PEP 397.

摘要:py script.py启动中规定的Python版本#!,如果或Python 2 #!缺失.该py -3 script.py运行Python 3.

  • 这是我正在寻找的答案。我使用 Python 2.7 和 Python 3.4.3 运行 Windows 10。在命令提示符中输入“py [python_version_number]”,例如:py -3 或 py 将调用您拥有的 python 版本。我认为在使用它之前必须设置环境变量。这对我来说很方便。 (2认同)
  • @Inuka:不需要设置环境变量.Python安装程序设置与`.py`扩展名的关联.启动器本身安装在已经位于`PATH`中的`C:\ Windows`中.这样,也不需要修改`PATH`变量. (2认同)
  • 非常感谢您的回答伴侣。通过这种方式,我们也可以调用pip。py -2 -m pip安装SomePackage或py -3.4.3 -m pip安装SomePackage (2认同)

Chr*_*ett 44

根据@alexander,您可以创建一组符号链接,如下所示.将它们放在路径中包含的位置,以便可以轻松调用它们

> cd c:\bin
> mklink python25.exe c:\python25\python.exe
> mklink python26.exe c:\python26\python.exe
Run Code Online (Sandbox Code Playgroud)

只要c:\ bin或者你把它们放在你的路径中,你就可以走了

> python25
Run Code Online (Sandbox Code Playgroud)

  • 聪明的主意.BTW`mklink`仅在Windows Vista/2008 +中可用.在XP和Server 2003上,可以使用`fsutil hardlink create <new filename> <existing filename>`创建"hardlink",并将<new filename>放入或移动到路径中的某个位置.但是,硬链接仅适用于同一驱动器. (4认同)

小智 24

例如对于 3.6 版本类型py -3.6。如果您还有 32 位和 64 位版本,则只需键入py -3.6-64py -3.6-32

  • 这应该是公认的答案!万分感谢! (3认同)
  • 这可能是最好的答案,因为它不需要重命名文件,并且第三方 IDE 会正常检测到这两者! (3认同)
  • 您能否通过更多解释来增强答案 - 这个“py”可执行文件在哪里 - 它是仅限 Windows 的添加吗?是否可以将其合并到顶部有“#!/usr/bin/env python3”的跨平台命令行脚本中? (2认同)

小智 9

我强烈推荐pyenv-win项目。

在此处输入图片说明

感谢kirankotari的工作,现在我们有了 pyenv 的 Windows 版本。


山茶树*_*葡萄树 7

  1. 安装python

    • C:\ Python27
    • C:\ Python36
  2. 环境变量

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. 文件重命名

    • C:\ Python27 \ python.exe吗?C:\ Python27 \ python2.exe
    • C:\ Python36 \ python.exe吗?C:\ Python36 \ python3.exe
  4. 点子

    • python2 -m pip install package
    • python3 -m pip install package


Len*_*bro 6

安装Python时,它不会覆盖其他主要版本的其他安装.所以安装Python 2.5.x不会覆盖Python 2.6.x,尽管安装2.6.6会覆盖2.6.5.

所以你可以安装它.然后你调用你想要的Python版本.例如:

C:\Python2.5\Python.exe
Run Code Online (Sandbox Code Playgroud)

适用于Windows 2.5上的Python 2.5

C:\Python2.6\Python.exe
Run Code Online (Sandbox Code Playgroud)

对于Windows 2.6上的Python 2.6

/usr/local/bin/python-2.5
Run Code Online (Sandbox Code Playgroud)

要么

/usr/local/bin/python-2.6
Run Code Online (Sandbox Code Playgroud)

Windows Unix上(包括Linux和OS X).

在Unix(包括Linux和OS X)上python安装时,将安装一个通用命令,这将是您安装的最后一个命令.这通常不是问题,因为大多数脚本将显式调用/usr/local/bin/python2.5或其他只是为了防止这种情况.但如果您不想这样做,而您可能不这样做,则可以像这样安装:

./configure
make
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)

注意"altinstall"意味着它将安装它,但它不会替换python命令.

在Windows上python,据我所知,你没有获得全局命令,所以这不是问题.

  • @Bilal Basharat:我已经回答了这个问题.它不是"暂时激活".您使用命令C:\ Python2.6\Python.exe运行Python 2.6,这就是您运行它的方式.然后使用命令C:\ Python2.5\Python.exe运行Python 2.5.这就是你同时运行两者的方式. (3认同)

Dav*_*nus 5

这是一个快速的黑客:

  1. 进入你要运行的python版本目录
  2. 右键单击python.exe
  3. 选择“创建快捷方式
  4. 给该快捷方式一个名称来调用(我使用 p27、p33 等)
  5. 将该快捷方式移动到您的主目录(C:\Users\Your name
  6. 打开命令提示符并输入name_of_your_shortcut.lnk(我使用p27.lnk


Jit*_*Pal 5

一种简单的方法是您可以使用

py -3.8 -m pip install virtualenv-3.8是你的[version number]

安装 virtualenv 后,您可以使用创建应用程序的虚拟环境

py -3.8 -m virtualenv [your env name]

然后cd到venv,输入 activate

这将激活您喜欢的 python 版本。只需更改版本号即可使用不同的 Python 版本。