我在 Windows 7 上使用 Python 3.x 进行大部分编程,但现在我需要使用 Python Imaging Library (PIL)、ImageMagick 和 wxPython,所有这些都需要 Python 2.x。
我可以在 Windows 7 中同时安装 Python 2.x 和 Python 3.x 吗?当我运行一个脚本时,我将如何“选择”哪个版本的 Python 应该运行它?上述程序是否能够同时处理多个版本的 Python?我已经搜索了好几个小时来寻找如何做到这一点无济于事。
谢谢。
我发现执行此操作的正式方法如下:
只需在 Windows 7 上安装两个(或更多,使用他们的安装程序)版本的 Python(对我来说使用 3.3 和 2.7)。
按照下面的说明,根据您的需要更改参数。
创建以下环境变量(双击默认):
Name: PY_PYTHON
Value: 3
要在特定解释器中启动脚本,请添加以下 shebang(脚本开头):
#! python2
要使用特定解释器执行脚本,请使用以下提示命令:
> py -2 MyScript.py
要启动特定的解释器:
> py -2
启动默认解释器(由 PY_PYTHON 变量定义):
> py
资源
PEP 397 - 适用于 Windows 的 Python 启动器
我所做的是同时下载 2.7.6 和 3.3.4。 Python 3.3.4 可以选择在环境变量中添加它的路径,这样就完成了。所以基本上我只是手动添加了 Python 2.7.6。
如何...
开始 > 在环境中的搜索类型中选择“编辑环境变量到您的帐户”1 向下滚动到路径,选择路径,单击编辑。添加 C:\Python27;所以你应该有两个版本的 Python 的路径,但如果你没有这个,你可以很容易地编辑它,这样你就可以做到...... C:\Python27;C:\Python33;导航到 C:\ 中的 Python27 文件夹并将 python.exe 的副本重命名为 python2.exe 导航到 C:\ 中的 Python34 文件夹并将 python.exe 的副本重命名为 python3.exe 测试:打开命令提示符并键入python2 ....砰!蟒蛇 2.7.6。退出。测试:打开命令提示符并输入 python3 ....BOOM!蟒蛇 3.4.3。退出。
注意:(为了不破坏步骤4和5中的pip命令,请将python.exe的副本保留在与重命名文件相同的目录中)
我在 Windows 中有多个版本。我只是更改了我不默认的版本的 exe 名称。
python.exe --> python26.exe pythonw.exe --> pythonw26.exe
至于包安装程序,大多数 exe 安装程序也允许您选择 python 安装来添加包。对于手动安装,请查看 --prefix 选项来定义包的安装位置:
http://docs.python.org/install/index.html#alternate-installation-windows-the-prefix-scheme
pip3
和 pip3.4
。 (它还包括它作为 pip
,但我认为删除它应该可以解决与 python2 的任何冲突)。实际上我的 Path
中没有 C:\Python34\Scripts
,所以我没有任何与点子相关的问题......
如果您使用 Anaconda Python,您可以轻松安装各种环境。
假设您安装了 Anaconda Python 2.7 并且想要一个 python 3.4 环境:
conda create -n py34 python=3.4 anaconda
然后激活环境:
activate py34
并停用:
deactivate py34
(对于 Linux,您应该使用 source activate py34
。)
链接:
要在同一系统中安装和运行任何版本的 Python,请按照下面的指南进行操作。
例如,假设您想在同一个 Windows 系统上安装 Python 2.x 和 Python 3.x。
在您想要的任何地方安装它们的两个二进制版本。当提示时不要注册他们的文件扩展名,也不要将它们自动添加到 PATH 环境变量中 运行简单的命令 python 将选择在 PATH 中首次遇到的可执行文件进行启动。换句话说,手动添加 Python 目录。键入 python 时将选择您首先添加的那个。连续的 python 程序(它们的目录放置在 PATH 中的顺序增加)将被选择如下: py -2 用于第二个 python py -3 用于第三个 python 等。无论“python”的顺序如何,您都可以:运行 Python 2.x 脚本使用以下命令:py -2(Python 3.x 功能)(即,将选择在您的 PATH 中找到的第一个 Python 2.x 安装程序)使用以下命令运行 Python 3.x 脚本:或 py - 3(即,将选择在您的 PATH 中找到的第一个 Python 3.x 安装程序)
在我的示例中,我首先安装了 Python 2.7.14 和 Python 3.5.3。这就是我的 PATH 变量开头的方式:
PATH=C:\Program Files\Microsoft MPI\Bin\;C:\Python27;C:\Program Files\Python_3.6\Scripts\;C:\Program Files\Python_3.6\;C:\ProgramData\Oracle\ Java\javapath;C:\Program Files (x86)\Common Files\Intel\Shared
...
请注意,首先是 Python 2.7,其次是 Python 3.5。
因此,运行 python 命令将启动 python 2.7(如果 Python 3.5,相同的命令将启动 Python 3.5)。
运行 py -2 会启动 Python 2.7(因为碰巧第二个 Python 是与 py -2 不兼容的 Python 3.5)。运行 py -3 启动 Python 3.5(因为它是 Python 3.x)
如果你稍后在你的路径中有另一个 python,你会像这样启动:py -4。如果/当 Python 版本 4 发布时,这可能会改变。
现在我的系统输出上的 py -4
或 py -5
等:Requested Python version (4) not installed
或 Requested Python version (5) not installed
等。
希望这足够清楚。
pip
。对于安装的任何其他 python,您必须手动指定路径,即。 C:\Python27\Scripts\pip.py [parameters]
。 (当然,作为一种快捷方式,你可以将任何你想要的 exe 放在环境变量中。)
-m pip install nameOfModule
附加到您使用的任何python命令(如答案中所述)。对于 Windows,我使用 pip-Win 让我的生活更轻松。
以下是您可以执行的操作:
安装 cmder。像使用 cmd 终端一样打开并使用 Cmder。使用命令别名来创建命令别名。
我做了以下事情:
alias python2 = c:\python27\python.exe
alias python3 = c:\python34\python.exe
就是这样! ;-)
set-alias python2 c:\python27\python.exe
我实际上只是想到了一个有趣的解决方案。虽然 Windows 不允许您轻松地为程序设置别名,但您可以创建重命名的批处理文件来调用当前程序。
不要重命名会破坏包括 pip 在内的很多东西的可执行文件,而是在与 python2.exe 相同的目录中创建文件 python2.bat。然后添加以下行:
%~dp0python %*
这种古老的语法是什么意思?嗯,它是一个批处理脚本,(Windows 版本的 bash)。 %~dp0 获取当前目录,而 %* 只会将传递给脚本的所有参数传递给 python。
对 python3.bat 重复
您也可以对 pip 和其他实用程序执行相同操作,只需将文件中的单词 python 替换为 pip 或任何文件名即可。别名将是文件的名称。
最重要的是,当添加到 PATH 时,Windows 会忽略扩展,因此正在运行
python3
将启动 python3 版本,命令 python2 将启动 python2 版本。
顺便说一句,这与 Spyder 用于将自身添加到 Windows 路径的技术相同。 :)
您可以在一台机器上安装多个版本的 Python,并且在安装过程中,您可以选择让其中一个与 Python 文件扩展名相关联。如果你安装模块,不同版本会有不同的安装包,或者你可以选择你想要定位的版本。由于他们通常将自己安装到解释器版本的 site-packages 目录中,因此不应该有任何冲突(但我没有对此进行测试)。要选择哪个版本的 python,如果它不是默认路径,则必须手动指定解释器的路径。据我所知,它们将共享相同的 PATH 和 PYTHONPATH 变量,这可能是个问题。
注意:我运行的是 Windows XP。我不知道其他版本是否有任何变化,但我看不出有任何理由。
我在自己的安装了 Python 2.7 和 Python 3.4 的 Windows 计算机上所做的是,我在与 Python.exe 文件相同的目录中编写了一个简单的 .bat 文件。它们看起来像,
cmd /k "c:\python27\python.exe" %*
%* 允许您在之后添加参数(Python 文件)。我相信 /k 在完成运行脚本后会保持提示打开。然后我将它保存为 python27.bat 然后我转到我的 Python 3 目录并在那里制作一个 bat 文件。现在在我的命令行中我可以写
Python27 helloworld.py
或者
Python34 helloworld.py
它们将在各自版本的 Python 中运行。确保 c:\python27 和 c:\python34 在您的环境变量中。
我从 here 得到了答复
我按照此处的说明分三个步骤完成了此操作:所有内容均直接从此处获取:http://ipython.readthedocs.io/en/stable/install/kernel_install.html。我目前在 Windows 8 上运行 Python 2.x 并安装了 Anaconda 4.2.13。
1)首先安装最新版本的python:
conda create -n python3 python=3 ipykernel
2)接下来激活python3
activate python3
3)安装内核:
python -m ipykernel install --user
如果你已经安装了 Python 3 并且想安装 2,把上面的 2 和 3 切换一下。当您打开一个新笔记本时,您现在可以在 Python 2 或 3 之间进行选择。
安装 Python 后检查系统环境变量,python 3 的目录应该首先在 PATH 变量中,然后是 python 2。
首先匹配的路径变量是 Windows 使用的路径变量。
与往常一样,py -2 将在这种情况下启动 python2。
我自己也遇到过这个问题,我在 .bat 中制作了我的启动器,因此您可以选择要启动的版本。
唯一的问题是您的 .py 必须在 python 文件夹中,但无论如何这里是代码:
对于 Python2
@echo off
title Python2 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 23, 24, 25, 26)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
path = %PATH%;C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause
对于 Python3
@echo off
title Python3 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 31, 32, 33, 34)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
cls
set path = %PATH%:C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause
将它们保存为 .bat 并按照里面的说明进行操作。
将您最常用的一个(在我的情况下为 3.3)安装在另一个之上。这将迫使 IDLE 使用你想要的那个。
或者(来自 python3.3 README):
安装多个版本
在 Unix 和 Mac 系统上,如果您打算使用相同的安装前缀(配置脚本的 --prefix 参数)安装多个版本的 Python,您必须注意您的主要 Python 可执行文件不会被不同版本的安装覆盖。使用“make altinstall”安装的所有文件和目录都包含主要和次要版本,因此可以并存。 “make install”还创建了 ${prefix}/bin/python3,它引用了 ${prefix}/bin/pythonX.Y。如果您打算使用相同的前缀安装多个版本,您必须确定哪个版本(如果有)是您的“主要”版本。使用“make install”安装该版本。使用“make altinstall”安装所有其他版本。
例如,如果您想安装 Python 2.6、2.7 和 3.3,其中 2.7 作为主要版本,您将在 2.7 构建目录中执行“make install”,在其他构建目录中执行“make altinstall”。
我只需要安装它们。然后我在“文件类型设置”/“上下文菜单”/搜索:“py”下的 http://defaultprogramseditor.com/ 使用免费(和便携式)软件,选择 .py 文件并通过复制为 2 IDLE 添加一个“打开”命令名为'open with IDLE的existant命令,将名称更改为IDLE 3.4.1/2.7.8,并替换程序路径中各自版本的文件编号。现在我只需右键单击 .py 文件并选择要使用的 IDLE。如果您愿意,也可以使用直接口译员。
我使用一个简单的解决方案从一个版本切换到另一个版本的 python,你可以安装你想要的所有版本。您所要做的就是创建一些可变环境。就我而言,我已经安装了 python 2.7 和 python 3.8.1,所以我创建了这个环境变量:
PYTHON_HOME_2.7=
然后在我的 PATH 环境变量中,我只放了 %PYTHON_HOME% 和 %PYTHON_HOME%\Scripts。在上面的示例中,我使用的是 2.7 版本,当我想切换到其他版本时,我只需设置 PYTHON_HOME=%PYTHON_HOME_3.8.1%。对于 JAVA、MAVEN、GRADLE、ANT 等,我也使用这种方法从一个版本快速切换到另一个版本。
仅当您在 Python IDE 中运行代码时才有效
我的 Windows 操作系统上同时安装了 Python 2.7 和 Python 3.3。如果我尝试启动一个文件,它通常会在 python 2.7 IDE 上打开。我是如何解决这个问题的,当我选择在 python 3.3 上运行我的代码时,我打开 python 3.3 IDLE(Python GUI),选择文件,用 IDLE 打开我的文件并保存它。然后当我运行我的代码时,它会运行到我当前打开它的 IDLE。它与 2.7 反之亦然。
我已经在 Windows 10pro 上安装了 python 2.7.13 和 python 3.6.1,当我尝试 pip2 或 pip3 时,我得到了相同的“致命错误”。
我为纠正这个问题所做的是转到 python.exe 的位置以获取 python 2 和 python 3 文件并为每个文件创建一个副本,然后我将每个副本重命名为 python2.exe 和 python3.exe,具体取决于安装文件夹。因此,我在每个 python 安装文件夹中都有一个 python.exe 文件和一个 python2.exe 或 python3.exe,具体取决于 python 版本。
当我输入 pip2 或 pip3 时,这解决了我的问题。
如果您无法进行其他任何工作,请在您选择的任何版本中打开一个解释器(我更喜欢使用 iPython)并:
import subprocess
subprocess.call('python script.py -flags')
这使用您当前正在运行的任何 python 版本。对于单个脚本工作正常,但如果您运行大量脚本,很快就会失控,在这种情况下,您总是可以制作一个包含所有这些调用的批处理文件。不是最优雅的答案,但它有效。
有没有办法为不同的python版本(如Linux)制作别名?
不定期副业成功案例分享
c:\python35;c:\python35\scripts;c:\python27\scripts;
。这允许使用pip2
/pip3
和easy_install-2.7
/easy_install-3.5
而不是pip
和easy_install
。py -m pip install ...
。在py
之后添加开关以选择在哪个 Python 下运行 pip,如上所述。