Маєте справу з декількома версіями Python та PIP?


499

Чи є якийсь спосіб зробити 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.
Ібо Ян

Відповіді:


624

Поточна рекомендація полягає в використанні 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

EDIT : 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
Потрібно оновити свою версію pyphon2.5 pip ... Це створює лише pip- {PYVERSION} під python, яким ви користуєтесь 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
Hugo Tavares

2
@JCRocamonde: програма pipвибирається на основі змінної середовища $ PATH. Якщо ви хочете змінити те, що є програмою для піп-програми "за замовчуванням", переупорядкуйте змінну середовища $ 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?
1717

1
це працювало для мене на windows. було встановлено 3, а потім встановлено 2
сьогодніhjai

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"
Серін

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

1
Крім того, / path / to / pip є таким: python2. {5,6} / Scripts / pip2. {5,6}
raul

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
Карл Адлер

Дякую. Дуже корисний. Тестується на двох різних серверах.
користувач2099484

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
Pyderman

29

Це працювало для мене у Windows таким чином:

  1. Я змінив назву файлів python python.py і pythonw.exe на python3.py pythonw3.py

  2. Тоді я просто запустив цю команду в підказці:

    python3 -m pip install package


4
Для всіх, хто розбирається, як встановити пакунки в python3 за допомогою pip на mac, ця команда полягає в тому, як ви встановлюєте пакети. Я витратив години на пошуки, і нарешті знайшов це!
sidney

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. Анаконда Python 3.5 :

    python3 -m pip install python-daemon

    або

    pip3 install python-daemon

    Простіше, оскільки Anaconda перекриває оригінальні бінарні файли Python у користувальницькому середовищі.

    Звичайно, установку в анаконду слід робити за допомогою condaкоманди, це лише приклад.


Також переконайтеся, що для цього конкретного python встановлено pip. Можливо, вам потрібно буде встановити pip вручну. Це працює в Ubuntu 16.04:

sudo apt-get install python-pip 

або

sudo apt-get install python3-pip

Поради щодо Анаконда тут не точні ... він нічого не "перекриває". Той факт, що він сприймає версію Anaconda за замовчуванням у вашій системі, є просто побічним ефектом вашої конкретної конфігурації, способів встановлення кожного інтерпретатора та порядку впорядкування вашого середовища .... вони залежать від інших.
Corey Goldberg

@CoreyGoldberg Я згоден, це було типовим моїм встановленням Ubuntu 16.04
квазофт

1
Ви, сер, це людина. З усіх абсолютно марних пояснень навколо цього питання це єдине, що мало для мене сенс. Час псевдонімувати ці команди і продовжувати своє життя! ДЯКУЮ ТОБІ.
Іофактура

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/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

Також розгляньте можливість перевірки: 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 \ Сценарії \;

Перейменування виконуваних файлів для версій :

  • Змінено ім'я виконуваного файлу python у C: \ Python36 та C: \ Python34 на python36 та python34 відповідно.

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

Поставлено прапорець у командному рядку з усіма версіями:

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

Встановлення пакетів окремо для кожної версії

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


Дякую !!! Це найкращий спосіб
rakshit ks

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)

Якщо ви хочете отримати більше indepth, щоб встановити конкретну версію пакета на певній версії 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

Тепер у вас повинно бути відокремлене на замовлення віртуальнв.


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. CD в ​​каталог файлу
  4. встановити sudo python2.7 setup.py

0

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

Це встановить пакет для цієї версії Python.


0

Це, мабуть, зовсім неправильно робити (я python noob), але я просто зайшов і відредагував файл pip

#!/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.