Как вы переключаетесь между питоном 2 и 3, и наоборот? - PullRequest
35 голосов
/ 03 декабря 2010

Я читаю Как Изучить Python The Hard Way, который использует 2. Недавно обнаруженный Invent With Python, который использует 3.

Могу ли я скачать python 3 и использовать его, когда я читаю Invent With Python, а затем переключиться обратно на python 2, когда я захочу прочитать How to Learn Python The Hard Way. Если да, то как мне выбрать версию, которую я использую?

Ответы [ 11 ]

27 голосов
/ 12 апреля 2016

Используя '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

Существует также способ создания виртуальной среды с ужедоступные пакеты сайта.

12 голосов
/ 03 декабря 2010

зависит от вашей системы / платформы ...

В настоящее время я нахожусь на 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, о которых вам нужно знать (печать - это функция,и т.д.).

3 голосов
/ 16 августа 2016

Я на 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 голос
/ 22 октября 2018

Если вы используете 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

Создайте среду Python 3 с именем py3, установите Python 3.5:

conda create --name py3 python=3.5

и т. Д.

1 голос
/ 04 июля 2017

В Windows 10 это намного проще, чем то, что было дано пользователями выше.

Установите обе версии в отдельных папках, а затем перейдите к переменной среды и добавьте путь для обеих версий.

Теперь, когда вы захотите запустить определенную версию, просто измените ее порядок (путь) и переместите ее в начало другой версии, а затем перезапустите cmd и наберите python, вы увидите, что только эта конкретная версия python будет работать.

How to switch between python 2 and 3

Например, в моем случае у меня есть две версии python: одна в anaconda (v3.0.6), а другая - python 2.7

каждый раз, когда я хочу запустить 2.7, я перемещаю его путь над версией anaconda, как вы можете видеть на скриншоте выше, и перемещаю его ниже, когда я хочу запустить версию anaconda.

1 голос
/ 03 декабря 2010

Несколько способов в * nix системах:

  • Установите в отдельные каталоги (например, / usr / local / python2 и / usr / local / python3) и создайте ссылку (например, / usr / bin / python), которую вы измените, чтобы указать на любой исполняемый файл, который вы хотите использовать.
  • То же самое, что и выше, но установить отдельные команды python (например, / usr / bin / python2 и / usr / bin / python3) и вызывать их, когда вы хотите вызвать python. Или для команды python по умолчанию используется один из них, а для pythonN - другой (N = 2 или 3, в зависимости от того, что не установлено по умолчанию).
1 голос
/ 03 декабря 2010

Да, вы можете.По крайней мере, на моей машине (Vista), v2 и v3 имеют совершенно разные режимы ожидания, что позволяет мне запускать любую версию, которая мне нравится, когда мне это нравится.Итак, скачайте v3.

0 голосов
/ 28 июля 2017

Я пробовал 6 решений до сих пор, как:

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

также используя пакет virtualenvwrapper и т.п. Никто из них не работал.

У меня есть Python 3.6 и Python2.7 на моем компьютере с Windows 10, поэтому я переименовал 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, активируйте ее с помощью:

Scripts \ 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

Надеюсь, это поможет.

0 голосов
/ 15 апреля 2017

, если вы используете Windows 10 и у вас есть Python 2.x и 3.x.

  1. открыть панель управления> система и безопасность> система
  2. нажмите дополнительные параметры системы.
  3. щелкните переменные окружения.
  4. щелкните путь и отредактируйте, а затем укажите путь к версии Python, которую вы хотите использовать выше, которую вы не хотите использовать [путем нажатия кнопки перемещения вверх] *
  5. перезапустите powershell.
  6. python --version
0 голосов
/ 22 августа 2016

В Windows Python launcher может сделать это за вас.

Статья PEP гласит:

Разбор строки Шебанга

Если первый аргумент командной строки не начинается с тире ('-') символ, будет сделана попытка открыть этот аргумент в виде файла и проанализировал для линии Шебанга в соответствии с правилами в [1] ::

#! interpreter [optional-arg]

Так что просто добавьте шебанг в начале вашего скрипта Python, например:

#! python3
#coding=utf-8

import sys
print(sys.version)
...

Или вы можете передать параметр командной строки в py.exe launcher:

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

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