【问题标题】:How do you switch between python 2 and 3, and vice versa?你如何在 python 2 和 3 之间切换,反之亦然?
【发布时间】:2011-05-19 11:01:00
【问题描述】:

我正在阅读 How To Learn Python The Hard Way,使用 2。最近发现 Invent With Python,使用 3。

我可以下载 python 3,并在我阅读 Invent With Python 时使用它,然后在我想阅读 How To Learn Python The Hard Way 时切换回 python 2。如果是这样,我将如何选择我使用的版本?

【问题讨论】:

  • @Matt Joiner:这不是那个问题的重复。这个问题是关于设置环境的,而不是要学习哪个版本的 Python。
  • 检查这个类似的问题:stackoverflow.com/questions/4301681/…
  • 嗯,我猜。我不能撤销我的近距离投票,请放心,它只是在 1/5 atm。

标签: python python-3.x python-2.6


【解决方案1】:

我只是觉得从python2切换到python3不需要设置环境。而是在命令行中编译 python 脚本文件时,而不是输入python,而是输入python3,然后将使用 python3。

# python3 myscript.py

【讨论】:

    【解决方案2】:

    如果您使用的是 anaconda:

    创建 Python 2 环境,命名为 py2,安装 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 时。拯救我的一天。谢谢。
    【解决方案3】:

    这是我的 2 美分。

    如果您使用的是基于 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 环境。

    【讨论】:

    • 显式是非常pythonic... python -c "import this" | grep -i 显式
    【解决方案4】:

    到目前为止,我已经尝试了 6 种解决方案,例如:

    virtualenv --python=python py27env
    mkvirtualenv --python=python3 py3env etc..
    

    也使用 virtualenvwrapper 包 等等。 他们都没有工作。

    我的 Windows 10 机器上有 Python 3.6 和 Python2.7,所以我将 C:\Python27\python.exe 重命名为 python2.exe 和 C:\Python36\python.exe 到 python3.exe 或者你甚至可以使用 python36.exe 格式。 当然 C:\Python27、C:\Python27\Scripts、C:\Python36、C:\Python36\Scripts 添加到环境变量 PATH 中。

    (1) 对于 python3,只需键入:

    python3 -m virtualenv venv3

    (2) 转到 venv 文件夹,使用以下命令激活它:

    脚本\activate.bat

    (3) (venv3) 显示它已激活:

    (venv3) HOME1@PC C:\Builts\venv3
    

    (4)然后检查是否真的是3.6:

    python--版本

    Python 3.6.0
    

    对于python2:

    python2 -m virtualenv venv2

    结果:

    (venv2) HOME1@PC C:\Builts\venv2
    python --version
    Python 2.7.9
    

    我希望它会有所帮助。

    【讨论】:

      【解决方案5】:

      在 Windows 10 中,它比上面用户给出的要容易得多。

      将两个版本安装在不同的文件夹中,然后转到环境变量并添加两个版本的路径。

      现在任何时候你想运行特定版本,只需更改它的顺序(路径)并将其移动到其他版本的顶部,然后重新启动 cmd 并这次键入 python,你会看到只有那个特定版本的 python将运行。

      以我为例,我有两个版本的 python 一个在 anaconda(v3.0.6) 中,另一个是 python 2.7

      每当我想运行 2.7 时,我都会将其路径移至 anaconda 版本上方,如您在上面的屏幕截图中所见,并在我想运行 anaconda 版本时将其移至下方。

      【讨论】:

        【解决方案6】:

        如果您使用的是 Windows 10 并拥有 python 2.x 和 3.x。

        1. 打开控制面板>系统和安全>系统
        2. 点击高级系统设置。
        3. 点击环境变量。
        4. 单击路径并编辑,然后将您想要使用的python版本的路径设置为您不想使用的上方[通过单击上移按钮]
        5. 重启powershell。
        6. python --version

        【讨论】:

          【解决方案7】:

          在 Windows 上,Python launcher 可以为您执行此操作。

          PEP 文章说:

          社帮线解析

          如果第一个命令行参数不以破折号 ('-') 开头 字符,将尝试将该参数作为文件打开 并根据 [1]::

          中的规则解析为 shebang 行
          #! interpreter [optional-arg]
          

          因此,只需在 Python 脚本的开头添加一个 shebang,如下所示:

          #! python3
          #coding=utf-8
          
          import sys
          print(sys.version)
          ...
          

          或者您可以将命令行参数传递给py.exe 启动器:

          C:\Users\Administrator>py -3 my_script.py
          
          C:\Users\Administrator>py -2 my_script.py
          

          【讨论】:

            【解决方案8】:

            我在使用 Python 3.5 和 2.7 的 Windows 10 上。使用 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 版本和用户配置文件。

            【讨论】:

              【解决方案9】:

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

              什么是 virtualenv?

              虚拟环境是 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
              

              还有一种方法可以使用现有的站点包创建虚拟环境。

              【讨论】:

                【解决方案10】:

                是的,你可以。至少在我的机器上(Vista),v2 和 v3 有完全独立的空闲,让我可以在我喜欢的时候运行任何我喜欢的版本。所以继续下载 v3。

                【讨论】:

                  【解决方案11】:

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

                  我目前使用的是 Ubuntu 10.10 并安装了 2.6 和 3.1。默认系统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 之间存在一些您需要注意的语法差异(打印是一个函数等)。

                  【讨论】:

                  • 如何在这两者之间切换?就像,如果我正在使用 gedit 并希望代码暂时为 2,那么我想用 3 处理一些东西,我将如何更改它,所以当程序在命令提示符下运行时,它将在 3 和不是 2?
                  • @rayne:当您在命令提示符处调用python myprog.py 时,它将使用您的默认 Python 版本。所以要切换,你只需要调用另一个版本。 python3 myprog.py 可能有效,或者您可能必须这样做 C:\Python31\python.exe myprog.py
                  【解决方案12】:

                  *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 所做的)。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-02-26
                  • 2014-04-17
                  • 2017-02-18
                  • 1970-01-01
                  相关资源
                  最近更新 更多