Работа с несколькими версиями Python и PIP?

Есть ли способ сделать pip хорошо играть с несколькими версиями Python? Например, я хочу использовать pip для явной установки вещей на установку моего сайта 2.5 или установку моего сайта 2.6.

Например, с easy_install, я использую easy_install-2.{5,6}.

И да, я знаю о virtualenv, и нет - это не решение этой конкретной проблемы.

Ответы

Ответ 1

В настоящее время рекомендуется использовать python -m pip, где python - это версия Python, которую вы хотели бы использовать. Это рекомендация, потому что она работает во всех версиях Python и во всех формах virtualenv. Например:

# The system default python:
$ python -m pip install fish

# A virtualenv python:
$ .env/bin/python -m pip install fish

# A specific version of python:
$ python-3.6 -m pip install fish

Предыдущий ответ, оставленный для потомков:

Начиная с версии 0.8, Pip поддерживает pip-{version}. Вы можете использовать его так же, как easy_install-{version}:

$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage

РЕДАКТИРОВАТЬ: pip изменил свою схему, чтобы использовать pipVERSION вместо pip-VERSION в версии 1.5. Вы должны использовать следующее, если у вас есть pip >= 1.5:

$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage

Проверьте https://github.com/pypa/pip/pull/1053 для получения более подробной информации


Рекомендации:

Ответ 2

В Windows вы можете запустить модуль pip, используя данную версию Python, через панель запуска Python, py.exe, если вы решили установить его во время установки Python 3.

py -3 -m pip install packagename
py -2 -m pip install packagename

Вы можете быть еще более конкретным и запросить точную под-версию Python:

py -3.6 -m pip install packagename

Чтобы получить список всех установленных версий Python, доступных через панель запуска, выполните:

py --list

В качестве альтернативы, вы можете запустить нужный исполняемый файл Python напрямую:

C:/path/to/specific/python.exe -m pip install packagename

Ответ 3

/path/to/python2.{5,6} /path/to/pip install PackageName не работает?

Для этого, чтобы работать с любой версией python, у которой нет уже установленного протокола, вам нужно загрузить pip и сделать python*version* setup.py install. Например python3.3 setup.py install. Это устраняет ошибку импорта в комментариях. (Как было предложено @hbdgaf)

Ответ 4

У меня был установлен python 2.6 по умолчанию (Amazon EC2 AMI), но мне нужен python2.7 плюс некоторые внешние пакеты для моего приложения. Предполагая, что вы уже установили python2.7 вместе с python по умолчанию (в моем случае, 2.6). Вот как установить пакеты и пакеты для нестандартного python2.7

Установите pip для вашей версии python:

curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py

Используйте специальную версию для установки пакетов:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python

Ответ 5

Он работал у меня в окнах таким образом:

  • Я изменил имя python файлов python.py и pythonw.exe на python3.py pythonw3.py

  • Затем я просто запустил эту команду в приглашении:

    python3 -m pip install package

Ответ 6

Другие ответы показывают, как использовать pip как с 2.X, так и с 3.X Python, но не показывает как обрабатывать случай с несколькими дистрибутивами Python (например, исходный Python и Anaconda Python).

У меня есть в общей сложности 3 версии Python: оригинальный Python 2.7 и Python 3.5 и Anaconda Python 3.5.

Вот как я устанавливаю пакет в:

  • Оригинал Python 3.5:

    /usr/bin/python3 -m pip install python-daemon
    
  • Оригинал Python 2.7:

    /usr/bin/python -m pip install python-daemon
    
  • Anaconda Python 3.5:

    python3 -m pip install python-daemon
    

    или

    pip3 install python-daemon
    

    Проще, поскольку Anaconda переопределяет оригинальные исполняемые файлы Python в пользовательской среде.

    Конечно, установка в anaconda должна выполняться командой conda, это просто пример.


Кроме того, убедитесь, что pip установлен для этого конкретного python. Возможно, вам придется вручную установить pip. Это работает в Ubuntu 16.04:

sudo apt-get install python-pip 

или

sudo apt-get install python3-pip

Ответ 7

Недавно я столкнулся с этой проблемой и обнаружил, что я не получаю правильный пип для Python 3, в моей Linux-системе, которая также имеет Python 2.

Сначала вы должны убедиться, что вы установили pip для своей версии python:

Для Python 2:

sudo apt-get install python-pip

Для Python 3:

sudo apt-get install python3-pip

Затем для установки пакетов для одной версии Python или другой, просто используйте для Python 2 следующее:

pip install <package>

или для Python 3:

pip3 install <package>

Ответ 8

pip также является пакетом python. Таким образом, самый простой способ установки модулей в конкретную версию python будет ниже

 python2.7 /usr/bin/pip install foo

или

python2.7 -m pip install foo

Ответ 9

По-видимому, существует несколько версий easy_install и pip. Кажется, это большой беспорядок. Во всяком случае, это то, что я сделал для установки Django для Python 2.7 на Ubuntu 12.10:

$ sudo easy_install-2.7 pip
Searching for pip
Best match: pip 1.1
Adding pip 1.1 to easy-install.pth file
Installing pip-2.7 script to /usr/local/bin

Using /usr/lib/python2.7/dist-packages
Processing dependencies for pip
Finished processing dependencies for pip

$ sudo pip-2.7 install django
Downloading/unpacking django
  Downloading Django-1.5.1.tar.gz (8.0Mb): 8.0Mb downloaded
  Running setup.py egg_info for package django

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
  Running setup.py install for django
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
    changing mode of /usr/local/bin/django-admin.py to 755
Successfully installed django
Cleaning up...

$ python
Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> 

Ответ 10

Отсюда: https://docs.python.org/3/installing/

Вот как установить пакеты для различных версий, которые устанавливаются одновременно с linux, mac, posix:

python2   -m pip install SomePackage  # default Python 2
python2.7 -m pip install SomePackage  # specifically Python 2.7
python3   -m pip install SomePackage  # default Python 3
python3.4 -m pip install SomePackage  # specifically Python 3.4
python3.5 -m pip install SomePackage  # specifically Python 3.5
python3.6 -m pip install SomePackage  # specifically Python 3.6

В Windows используйте пусковую установку py Python в комбинации с переключателем -m:

py -2   -m pip install SomePackage  # default Python 2
py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3   -m pip install SomePackage  # default Python 3
py -3.4 -m pip install SomePackage  # specifically Python 3.4

Ответ 11

В Linux, Mac OS X и других системах POSIX используйте версии Python в сочетании с переключателем -m для запуска соответствующей копии pip:

python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage

(также могут быть доступны команды с правильной версией pip)

В Windows используйте пусковую установку py Python в комбинации с переключателем -m:

py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3.4 -m pip install SomePackage  # specifically Python 3.4

если вы получите ошибку для py -3.4 попробуйте:

pip install SomePackage

Ответ 12

Большинство ответов здесь затрагивают проблему, но я хочу добавить что-то, что меня постоянно путало, в связи с созданием альтернативной установки python в /usr/local на CentOS 7. Когда я установил ее, она появилась, поскольку я мог использовать pip2.7 install, и он установил модули. Однако я не мог понять, почему моя недавно установленная версия python не увидела, что я устанавливаю.

В CentOS 7 оказывается, что в папке /usr/bin уже есть python2.7 и pip2.7. Чтобы установить pip для вашего нового дистрибутива python, вам нужно указать sudo на /usr/local/bin

sudo /usr/local/bin/python2.7 -m ensurepip

Это должно привести к тому, что pip2.7 будет установлен в вашей папке /usr/local/bin вместе с вашей версией python. Хитрость заключается в том, что если вы хотите установить модули, вам нужно либо изменить переменную sudo $PATH, чтобы включить /usr/local/bin, либо вам нужно выполнить

sudo /usr/local/bin/pip2.7 install <module>

если вы хотите установить новый модуль. Мне навсегда потребовалось помнить, что sudo не сразу увидел /usr/local/bin.

Ответ 13

Установка нескольких версий Python и соответствующих пакетов.

Версия Python на той же машине Windows: 2.7, 3.4 и 3.6

Установка всех 3 версий Python:

  • Установил Python 2.7, 3.4 и 3.6 с указанными ниже путями

enter image description here

PATH для всех 3 версий Python:

  • Убедитесь, что переменная PATH (в системных переменных) содержит следующие пути: C:\Python27 \; C:\Python27\Scripts; C:\Python34 \; C:\Python34\Scripts; C:\Python36 \; C:\Python36\Scripts \;

Переименование исполняемых файлов для версий:

  • Изменено имя исполняемого файла python в C:\Python36 и C:\Python34 на python36 и python34 соответственно.

enter image description here

Проверено на наличие командной строки со всеми версиями:

enter image description here

Установка пакетов отдельно для каждой версии

enter image description here

Ответ 14

Контекст: Archlinux

Действие:
Установите python2-pip:
sudo pacman -S python2-pip

Теперь у вас есть pip2.7:
sudo pip2.7 install boto

Тест (в моем случае мне нужно было "boto" ):
Выполните следующие команды:

python2
import boto

Успех: нет ошибок.

Выход: Ctrl + D

Ответ 15

например, если вы установили другие версии (например, 3.5) по умолчанию и хотите установить pip для python 2.7:

Ответ 16

Вы можете перейти к примеру C:\Python2.7\Scripts, а затем запустить cmd с этого пути. После этого вы можете запустить pip2.7 install yourpackage...

Это установит пакет для этой версии Python.

Ответ 17

Вот мое решение проблемы. Работает на Python3. Основные возможности:

  • Каждая версия Python скомпилирована из источника
  • Все версии установлены локально
  • Не блокирует установку Python по умолчанию по умолчанию
  • Каждая версия Python изолирована от virtualenv

Эти шаги заключаются в следующем:

  1. Если у вас есть несколько дополнительных версий python, установленных каким-то другим способом, избавитесь от них, например, удалите $ HOME/.local/lib/python3.x и т.д. (Также глобально установленные). Однако не трогайте версию python3 по умолчанию для системы.

  2. Загрузите исходный код для разных версий python в следующей структуре каталогов:

    $HOME/
        python_versions/ : download Python-*.tgz packages here and "tar xvf" them.  You'll get directories like this:
          Python-3.4.8/
          Python-3.6.5/
          Python-3.x.y/
          ...
    
  3. В каждом каталоге "Python-3.xy/" выполните следующие действия (НЕ используйте "sudo" на любом из шагов!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
    
  4. В "python_versions/" создайте такие файлы:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
    
  5. Теперь, в любое время, когда вы хотите выбрать python3.x, do

    source $HOME/python_versions/env_python3x.bash
    

    войти в виртуальный

  6. Пока в virtualenv, установите ваши любимые пакеты python с помощью

    pip install --upgrade package_name
    
  7. Чтобы выйти из версии virtualenv и python, просто введите "deactivate"

Ответ 18

Это, вероятно, совершенно неправильная вещь (я нуб питона), но я просто вошел и отредактировал файл пипса.

#!/usr/bin/env python3 <-- I changed this line.

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Ответ 19

В частности, для Windows:\path\to\python.exe -m pip install PackageName работает.

Ответ 20

Если у вас есть несколько версий, а также несколько архитектур (32-разрядная, 64-разрядная), вам необходимо добавить -32 или -64 в конце вашей версии.

Для окон перейдите в cmd и введите py --list, и он выдаст версии, которые вы установили. Список будет выглядеть следующим образом:

Installed Pythons found by py Launcher for Windows
 -3.7-64 *
 -3.7-32
 -3.6-32

В качестве примера приведем полную команду:

py -3.6-32 -m pip install (package)

Если вы хотите получить больше информации, чтобы установить определенную версию пакета на определенную версию python, используйте == (версия) после пакета. Например,

py -3.6-32 -m pip install opencv-python==4.1.0.25