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


501

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

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

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


1
@YiboYang это работает с такими вещами, как pip34и pip35?
JinSnow

2
@JinSnow Должно, при условии, что pip3.xфактически управляет версией Python, в которую вы хотите установить пакеты (возможно, запустите, pip3.x -Vчтобы увидеть) Или используйте решение @ Hugo, чтобы лучше контролировать множество версий Python.
Ибо Ян

Ответы:


627

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

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

# A virtualenv's 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 для получения более подробной информации


Ссылки:


12
Не работает Хотя в последней версии pip установлен скрипт pip-2.6, он не потрудился установить скрипт pip-2.5.
Крис Б.

2
Вам нужно обновить вашу версию Python 2.5 pip ... Она создает только pip- {PYVERSION} под питоном, который вы используете pip.
Уго Таварес

4
Это неверно Я использую pip 1.2.1 с Python2.7 в Ubuntu, и нет альтернативных версий pip.
Церин

2
@rodling: вероятно , вы не установили pipчерез pip/ easy_installили get-pip.pyили вы не имеете python2.7. если у вас есть python2.7, попробуйте: pip install --upgrade pipи вы должны иметь pipиpip-2.7
Уго Таварес

2
@JCRocamonde: программа pipвыбирается на основе переменной среды $ PATH. Если вы хотите изменить программу pip по умолчанию, измените порядок переменных среды $ PATH. Ищите что-то вроде «путь переменной среды linux» для получения более подробной информации о $ PATH.
Уго Таварес

117

В Windows можно выполнить модуль пипсов , используя данную версию 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

11
если на Windows установлены 2.7 и 3.5, это сработало сразу
phil_lgr

1
Нет ли способ иметь python2, python3, pip2и pip3на Windows?
17

1
это работало для меня на окнах. было установлено 3, а затем установлено 2
daneshjai

1
Спасибо, это сработало для меня! Не могу поверить, насколько это было сложно. (Ни один из этих вариантов, ни python-3.7 -m pip install, ни python-3.7 -m pip install, ни python3.7 -m pip install у меня не сработали ...)
jeppoo1

75

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

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


4
Чтобы это работало, скажем, на python 3, вам нужно скачать pip и выполнить «python3 setup.py install». Лично я нахожу это решение не очень хорошим. Для начала я даже не знал, что команда pip не была бинарной. Это не критика @bwinton, я просто удивлен, что нет лучшего способа сделать это.
Майк Велла

28
«ImportError: нет модуля с именем pkg_resources»
Cerin

3
Я сбит с толку, что проблема с импортером получила больше шансов, чем решение того же комментария над ним.
RobotHumans

1
Кроме того, / путь / к / пип это: python2. {5,6} / Scripts / pip2. {5,6}
Рауль

2
Чтобы вызвать модуль python, вы должны использоватьpython2.7 -m pip install PackageName
llrs

52

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

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

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

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

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

2
отлично работал для меня на Python 3.4 со следующим: python3 get-pip.pyи позже с помощью команды pip сpip34 install example
Карл Адлер

Спасибо. Очень полезный. Проверено на двух разных серверах.
user2099484 15.09.15

3
Это сработало, когда я использовал «python2.7 get-pip.py» вместо «python27 get-pip.py»
SummerEla

Человек, который чувствовал себя схематично, но у меня получилось установить pip2.6 на Centos 5.
Аарон Р.

Получил, Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipкогда я пыталсяpython2.6 get-pip.py
Пидерман

29

У меня в Windows это сработало так:

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

  2. Затем я просто запустил эту команду в командной строке:

    python3 -m pip install package


4
Просто для того, чтобы узнать, как устанавливать пакеты в python3 с помощью pip на mac, эта команда предназначена для установки пакетов. Я часами искал и наконец нашел его!
Сидни

25

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

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

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

  1. Оригинальный Python 3.5 :

    /usr/bin/python3 -m pip install python-daemon
  2. Оригинальный Python 2.7 :

    /usr/bin/python -m pip install python-daemon
  3. Анаконда Питон 3.5 :

    python3 -m pip install python-daemon

    или

    pip3 install python-daemon

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

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


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

sudo apt-get install python-pip 

или

sudo apt-get install python3-pip

Совет относительно Анаконды здесь не точен ... он ничего не отменяет. Тот факт, что он выбирает версию Anaconda по умолчанию в вашей системе, является просто побочным эффектом вашей конкретной конфигурации, того, как вы установили каждый интерпретатор, и порядка расположения вашей среды ... они будут отличаться для других.
Кори Голдберг

@CoreyGoldberg Я согласен, это было по умолчанию на моей установке Ubuntu 16.04
quasoft

1
Вы, сэр, мужчина. Из всех совершенно бесполезных объяснений, связанных с этой проблемой, это единственное, что имело смысл для меня. Время псевдонимов этих команд и продолжить мою жизнь! БЛАГОДАРЮ ВАС.
Iofacture

14

Недавно я сам столкнулся с этой проблемой и обнаружил, что у меня не получается получить правильный совет для 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>

11

pip также является пакетом Python. Так что самый простой способ установить модули для конкретной версии Python будет ниже

 python2.7 /usr/bin/pip install foo

или

python2.7 -m pip install foo

10

Так что, по-видимому, существует несколько версий 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
>>> 

8

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

Вот как установить пакеты для разных версий, которые установлены одновременно 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

Также рассмотрите возможность проверить: pipenv
jmunsch

7

В 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

5

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

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

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

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

введите описание изображения здесь

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 соответственно.

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь


Спасибо !!! Это лучший способ
ракшить кс

4

Если у вас есть несколько версий, а также несколько архитектур (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, используйте == (version) после пакета. Например,

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

2

Большинство ответов здесь касаются этой проблемы, но я хочу добавить кое-что, что меня постоянно смущало в связи с созданием альтернативной установки python в /usr/localCentOS 7. Когда я устанавливал там, казалось, что pip работал, так как я мог использовать 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. Хитрость в том, что когда вы хотите установить модули, вам нужно либо изменить $PATHпеременную sudo для включения, /usr/local/binлибо выполнить

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

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


2

Вот мой взгляд на проблему. Работает на 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, сделайте

    source $HOME/python_versions/env_python3x.bash

    войти в virtualenv

  6. Находясь в virtualenv, установите ваши любимые пакеты python с

    pip install --upgrade package_name
  7. Чтобы выйти из версии virtualenv и python, просто введите «деактивировать»

ОБНОВИТЬ

Кажется, --no-site-packagesэто устарело. Это легко исправить: активировав virtualenv, просто укажите переменную HOME env где-то еще, чем ваш настоящий домашний каталог, то есть:

export HOME=some/where/else

Хороший способ сделать это в целом:

  • Создать виртуал
  • Активировать virtualenv
  • Если вы хотите "перезапустить" существующие библиотеки в ваше virtualenv, сделайте мягкую ссылку на них из вашей существующей установки, т.е. ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Делать export PYTHONPATH=,export HOME=/some/other/dir

Теперь у вас должен быть индивидуально подобранный virtualenv.


0

Контекст: Archlinux

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

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

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

python2
import boto

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

Выход: Ctrl+D


0

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

  1. загрузить pip по адресу https://pypi.python.org/pypi/pip (tar)
  2. распаковать файл tar
  3. перейдите в каталог файла
  4. sudo python2.7 setup.py установить

0

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

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


0

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

#!/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())

0

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.