Работа с несколькими версиями 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 с указанными ниже путями
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 соответственно.
Проверено на наличие командной строки со всеми версиями:
Установка пакетов отдельно для каждой версии
Ответ 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
Эти шаги заключаются в следующем:
-
Если у вас есть несколько дополнительных версий python, установленных каким-то другим способом, избавитесь от них, например, удалите $ HOME/.local/lib/python3.x и т.д. (Также глобально установленные). Однако не трогайте версию python3 по умолчанию для системы.
-
Загрузите исходный код для разных версий 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/
...
-
В каждом каталоге "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
-
В "python_versions/" создайте такие файлы:
env_python3x.bash:
#!/bin/bash
echo "type deactivate to exit"
source $HOME/python_versions/Python-3.x.y/env/bin/activate
-
Теперь, в любое время, когда вы хотите выбрать python3.x, do
source $HOME/python_versions/env_python3x.bash
войти в виртуальный
-
Пока в virtualenv, установите ваши любимые пакеты python с помощью
pip install --upgrade package_name
-
Чтобы выйти из версии 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