如何在Python 2和3之间切换,反之亦然?

49

我正在阅读《笨办法学 Python》,该书使用的是 2 版本。最近发现了《Python 编程快速上手》这本书,它使用的是 3 版本。

我能否下载 Python 3,在阅读《Python 编程快速上手》时使用它,然后在想要阅读《笨办法学 Python》时切换回 Python 2?如果可以,我该如何选择所使用的版本?


5
这并不是那个问题的重复。这个问题是关于设置环境,而不是学习哪个版本的Python。 - GreenMatt
请查看类似的问题:http://stackoverflow.com/questions/4301681/testing-a-python-script-in-a-specific-version/4301739#4301739 - Kabie
嗯,我猜是这样。我不能撤销我的关闭投票,放心,它只有1/5目前。 - Matt Joiner
13个回答

40

使用'virtualenv',您可以在单台计算机上拥有不同的隔离Python环境。同时您可以随时在不同的Python解释器版本之间切换。

什么是Virtual Environment?

虚拟环境是Python的隔离工作副本,它使您能够在不影响其他项目的情况下在特定项目上工作。它允许多个并排安装的Python,每个项目一个。它实际上并没有安装单独的Python副本,但它提供了一种聪明的方法来保持不同的项目环境隔离。

如何安装?

pip install virtualenv

创建 Python 2.7 的虚拟环境:

root:~# which python2.7

/usr/bin/python2.7

root:~# which python3.4

/usr/local/bin/python3.4

您也可以使用您选择的Python解释器:

root:~# virtualenv -p /usr/bin/python2.7 Vpy27

Running virtualenv with interpreter /usr/bin/python2.7

New python executable in /root/Vpy27/bin/python2.7

Also creating executable in /root/Vpy27/bin/python

Installing setuptools, pip, wheel...done.

要开始使用虚拟环境,需要激活它:

root:~# source Vpy27/bin/activate

当前虚拟环境的名称现在将出现在提示符左侧:

(Vpy27) root:~# python -V
Python 2.7.3

按照通常方式安装软件包,例如:

(Vpy27) root:~# pip install junos-eznc    >> All pip installs done here, will be available only in this environment.

如果您暂时完成了虚拟环境中的工作,您可以将其停用:

(Vpy27) root:~# deactivate   

创建 Python 3.4 的虚拟环境:

root:~# which python3.4

/usr/local/bin/python3.4

root:~# virtualenv -p /usr/local/bin/python3.4 Vpy34

root:~# source Vpy34/bin/activate

(Vpy34) root:~# python -V
Python 3.4.4

还有一种方法可以使用已经可用的site-packages创建虚拟环境。


12

这取决于您的系统/平台...

我目前使用的是Ubuntu 10.10,同时安装了2.6和3.1版本的Python。默认的系统Python版本是2.6,而Python3则作为一个额外的软件包被安装。

corey@studio17:~$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
corey@studio17:~$ python3
Python 3.1.2 (release31-maint, Sep 17 2010, 20:27:33) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

同样地,在Windows上,我安装了2.6和3.1两个版本(分别在C:\Python26和C:\Python31中)。

很容易来回切换。


另外... 2.x和3.x之间也存在一些语法差异,你需要注意一下(例如print是一个函数等)。


你如何在两者之间切换?比如,如果我正在使用gedit并想要将代码设置为2一段时间,然后我想要使用3来处理某些东西,我该如何更改它,以便在命令提示符中运行程序时,它将是3而不是2? - rayne117
@rayne:在命令提示符处调用“python myprog.py”时,它将使用您的默认Python版本。因此要切换,您只需调用另一个版本。python3 myprog.py可能有效,或者您可能需要执行C:\Python31\python.exe myprog.py - Thomas K

9
在Windows 10中,安装两个不同版本的Python到分别的文件夹中,然后进入环境变量并添加两个版本的路径。现在,每当您想要运行特定版本时,只需更改其顺序(路径)并将其移动到另一个版本的顶部,然后重新启动cmd并键入python,这时您会发现只有该特定版本的Python会运行。例如,在我的情况下,我有两个Python版本,一个是Anaconda(v3.0.6),另一个是Python 2.7。任何时候,我想运行2.7版本时,我将其路径移到Anaconda版本之上,如上面的截图所示,而在想运行Anaconda版本时则将其路径移到下方。请参考此链接了解详细信息:How to switch between python 2 and 3

3

我使用Windows 10操作系统,同时安装有Python 3.5和2.7版本。通过PowerShell命令行工具,下面是我如何在两个版本之间切换:

############################################################
# Switch to Python 2.7
############################################################

# Remove python 3.5 from PATH
$current_path = [Environment]::GetEnvironmentVariable("Path", "User")
$python3_path = "C:\Users\REPLACEUSER\AppData\Local\Programs\Python\Python35-32\Scripts\;C:\Users\REPLACEUSER\AppData\Local\Programs\Python\Python35-32\;"
$new_path = $current_path.replace($python3_path, "")
[Environment]::SetEnvironmentVariable("Path", $new_path, "User")

# Add python 2.7 to PATH
# Run PowerShell as administrator
$current_path = [Environment]::GetEnvironmentVariable("Path", "Machine")
$python2_path = "C:\Python27\;C:\Python27\Scripts;"
$new_path = $python2_path + $current_path
[Environment]::SetEnvironmentVariable("Path", $new_path, "Machine")

# Restart PowerShell to see change

# Confirm change
python --version


############################################################
# Switch to Python 3.5
############################################################

# Remove python 2.7 from PATH
# Run PowerShell as administrator
$current_path = [Environment]::GetEnvironmentVariable("Path", "Machine")
$python2_path = "C:\Python27\;C:\Python27\Scripts;"
$new_path = $current_path.replace($python2_path, "")
[Environment]::SetEnvironmentVariable("Path", $new_path, "Machine")

# Add python 3.5 to PATH
$current_path = [Environment]::GetEnvironmentVariable("Path", "User")
$python3_path = "C:\Users\REPLACEUSER\AppData\Local\Programs\Python\Python35-32\Scripts\;C:\Users\REPLACEUSER\AppData\Local\Programs\Python\Python35-32\;"
$new_path = $python3_path + $current_path
[Environment]::SetEnvironmentVariable("Path", $new_path, "User")

# Restart PowerShell to see change

# Confirm change
python --version

请注意,您需要更新路径以反映您的Python版本和用户配置文件。

1
如果您正在使用Windows 10并且同时安装了Python 2.x和3.x,请按照以下步骤操作:
  1. 打开控制面板 > 系统和安全 > 系统
  2. 点击高级系统设置
  3. 点击环境变量
  4. 点击Path,编辑并将您想要使用的Python版本的路径放在您不想使用的版本之上[通过点击向上移动按钮]
  5. 重新启动PowerShell
  6. 输入python --version查看版本号

1

可以的。至少在我的电脑上(Vista),v2和v3有完全独立的IDLE,让我可以在任何时候运行我想要的版本。所以请放心下载v3。


1

*nix系统下有几种方法:

  • 安装到不同的目录中(例如/usr/local/python2和/usr/local/python3),并创建一个链接(例如/usr/bin/python),将其更改为指向要使用的可执行文件。
  • 与上面相同的安装方式,但设置单独的python命令(例如/usr/bin/python2和/usr/bin/python3),并在调用python时调用它们。或者将python命令默认设置为其中一个,并为另一个设置pythonN(N = 2或3,不是默认值)。

这应该是任何打包的Unix系统的默认设置(也是“configure”所做的)。 - Nick Bastin

1

这是我的两分钱。

如果您使用的是基于Unix的系统(Ubuntu等),并且当前已安装Python 2.x,请前往Python.org下载Python 3.x。

安装后,它将创建一个单独的目录python3

您完成了。

要使用python2.x运行程序,请使用python filename.py

要使用python3.x运行程序,请使用python3 filename.py

同样,要启动python2.xpython 3.x解释器,请分别使用pythonpython3

我看到一些答案指向virtualenv,我认为那不是您要求的,virtualenv用于隔离Python环境。


明确表达是非常符合Python风格的... python -c "import this" | grep -i explicit - Corey Goldberg

1
如果您正在使用Anaconda:
创建一个名为py2的Python 2环境,安装Python 2.7:
conda create --name py2 python=2.7

激活并使用Python 2环境:

WINDOWS系统:

activate py2

LINUX,macOS:
source activate py2

停用 Python 2 环境:

WINDOWS:

deactivate

macOS,LINUX:

source deactivate

同样适用于py3 创建名为py3的Python 3环境,安装Python 3.5:
conda create --name py3 python=3.5

等等等等...

似乎conda在Mac上有不同版本的Python时更稳定,救了我一命。谢谢。 - Amin Mousavi

0

如何在没有管理员权限的情况下为Python2安装虚拟环境。将python.exe重命名为python27.exe并放入Python2文件夹中; 将python27和python27\Scripts添加到您帐户的环境变量中。 调用命令提示符cmd

python27 <python2.7 Scripts\pip.exe路径> install virtualenv


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接