pip: работа с несколькими версиями Python?
Есть ли способ сделать pip
хорошо играть с несколькими версиями Python? Например, я хочу использовать pip
явная установка вещей либо на мой сайт 2.5, либо на мой сайт 2.6.
Например, с easy_install
, Я использую easy_install-2.{5,6}
,
И да - я знаю о virtualenv, и нет - это не решение этой конкретной проблемы.
31 ответ
Текущая рекомендация заключается в использовании python -m pip
, где 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
РЕДАКТИРОВАТЬ: Пип изменил свою схему для использования pipVERSION
вместо pip-VERSION
в версии 1.5. Вы должны использовать следующее, если у вас есть pip >= 1.5
:
$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage
Проверьте https://github.com/pypa/pip/pull/1053 для получения более подробной информации
Рекомендации:
В Windows вы можете запустить модуль pip, упомянув версию Python (необходимо убедиться, что программа запуска находится на вашем пути)
py -3.4 -m pip install pyfora
py -2.7 -m pip install pyfora
В качестве альтернативы, вы можете вызвать нужный исполняемый файл Python, например, так:
/path/to/python.exe -m pip install pyfora
/path/to/python2.{5,6} /path/to/pip install PackageName
не работает?
Чтобы это работало на любой версии Python, в которой еще не установлен pip, вам нужно скачать pip и сделать python*version* setup.py install
, Например python3.3 setup.py install
, Это устраняет ошибку импорта в комментариях. (Как предложено @hbdgaf)
У меня был установлен 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
Это работает для меня в Windows таким образом:
Я изменил имя файлов python python.py и pythonw.exe на python3.py pythonw3.py
Затем я просто запустил эту команду в командной строке:
python3 -m pip install package
Другие ответы показывают, как использовать 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
Анаконда Питон 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
Отсюда: 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
Недавно я сам столкнулся с этой проблемой и обнаружил, что у меня нет нужного пункта для 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>
pip также является пакетом Python. Так что самый простой способ установить модули для конкретной версии Python будет ниже
python2.7 /usr/bin/pip install foo
или же
python2.7 -m pip install foo
В Linux, Mac OS X и других системах POSIX используйте версионные команды Python в сочетании с -m
переключиться на запуск соответствующей копии pip
:
python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage
(также могут быть доступны соответствующие команды pip)
В Windows используйте py
Python Launcher в сочетании с -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
Итак, по-видимому, существует несколько версий 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
>>>
Установка нескольких версий 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 соответственно.
Проверено на наличие командной строки со всеми версиями:
Установка пакетов отдельно для каждой версии
Если у вас несколько версий, а также несколько архитектур (32-разрядная, 64-разрядная), вам нужно будет добавить -32 или -64 в конце вашей версии.
Для Windows перейдите в 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
Вот мой взгляд на проблему. Работает на 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, сделайте
source $HOME/python_versions/env_python3x.bash
войти в virtualenv
Находясь в virtualenv, установите ваши любимые пакеты python с
pip install --upgrade package_name
Для выхода из версии virtualenv и python просто введите "деактивировать"
Для python 3 и ОС Windows я всегда использую этот синтаксис для установки пакетов в другой версии:
Сначала я всегда использую командную строку Git Bash.
Вот пример установки пакета urllib.
Версия Python по умолчанию: (Обычная команда pip)
pip install urllib3
Для других версий
py -3.8 -m pip install urllib3
py => для питона
-3.8 => для версии (я использую версию 3.8.7), но если вы используете версию 3.7.7, она будет «-3.7»
-m : просто потому или для изменения
pip install urllib3 : обычная команда pip
Вы можете использовать одну из следующих команд:
pip2 install SomePackage
pip3 install SomePackage
python2 -m pip install SomePackage
python3 -m pip install SomePackage
И, конечно же, убедитесь, что у вас установлена правильная версия pip.
sudo apt-get install python-pip
sudo apt-get install python3-pip
Я сам не использовал эти команды, но в некоторых ответах выше предлагается использовать их, чтобы указать именно ту версию python, которую вы хотите использовать.
pip-2.7 install SomePackage
python-3.6 -m pip install SomePackage
Большинство ответов здесь касаются этой проблемы, но я хочу добавить кое-что, что постоянно смущало меня в отношении создания альтернативной установки python в /usr/local
на CentOS 7. Когда я установил там, казалось, что pip работает, так как я мог использовать pip2.7 install
и это будет устанавливать модули. Однако я не мог понять, почему моя недавно установленная версия python не видела того, что я устанавливал.
В CentOS 7 выясняется, что уже есть python2.7 и pip2.7 в /usr/bin
папка. Чтобы установить 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
,
Простой и свежий
На окнах
1- Предположим, что в вашей системе установлена другая версия Python. Для проверки используйте следующую команду для проверки:
> py --list
-3.10-64 *
-3.7-64
2- Установите предпочтительную версию по умолчанию:
- установив
PY_PYTHON
переменная окружения (например, PY_PYTHON=3.7). - установив файл py.ini, обычно расположенный на
C:\Users\<your user name>\AppData\Local
если не создать. Например, установка переменных среды PY_PYTHON=3 и PY_PYTHON3=3.7 эквивалентна INI-файлу, содержащему:
[defaults]
python=3
python3=3.7
3- проверьте, набрав еще разpy --list
:
> py --list
-3.10-64
-3.7-64 *
4- Если вы хотите запустить виртуальную среду со специальной версией python и pip, см. этот пост .
В Linux (Убунту)
Простой подход к управлению различными версиями Python в Linux:update-alternatives
команда. Эта команда дает нам возможность легко переключаться между многими версиями одного и того же программного обеспечения.
- формат команды:
update-alternatives --install link name path priority
, имя — это общее имя для главной ссылки, ссылка — это имя ее символической ссылки, путь — это альтернатива, вводимая для главной ссылки, а приоритет — это приоритет группы альтернатив. - Использование: Предположим, вы установили две версии Python (python3.10, python3.7). Теперь, выполнив эту команду, вы свяжете имя команды (python3) с разными версиями python и назначите номер приоритета. Номер более высокого приоритета означает более высокий приоритет.
$ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
$ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
- Список установленных версий python с помощью этой команды:
$ update-alternatives --list python3
/usr/bin/python3.7
/usr/bin/python3.10
- Переключение между версиями: просто вручную выберите номер приоритета нужной версии Python после выполнения следующей команды.
$ update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.10 2 auto mode
* 1 /usr/bin/python3.7 1 manual mode
2 /usr/bin/python3.10 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
Например, если вы устанавливаете другие версии (например, 3.5) по умолчанию и хотите установить pip для python 2.7:
- загрузить pip по адресу https://pypi.python.org/pypi/pip (tar)
- распаковать файл tar
- перейдите в каталог файла
- sudo python2.7 setup.py установить
Обновление PIP и установка пакетов при использовании определенного местоположения pip:
Я получал периодическую ошибку «Доступ запрещен» при использовании простой командной строки.pip install <library>
на некоторых лабораторных машинах, которые использовали pip изc:\users\...
папка вместоc:\Program Files\Python
папка для всех пользователей. Благодаря приведенному выше ответу MultiplyByZer0 мне удалось реализовать решение, которое указывало путь к Python, а затем запускало pip.
Вот сценарий powershell, который я использую для принудительного обновления pip, а затем установки библиотек Python:
$fullPath = "C:\Program Files\Python38"
$thisApp = "python.exe"
$arguments = "-m pip install --upgrade pip"
$appPath = join-path $fullPath $thisApp
Start-Process $appPath $arguments -Verb RunAs -Wait
$packages = @( "pylint"
"pillow"
"pygame"
"matplotlib"
"pandas"
"godirect")
foreach ($package in $packages)
{
Write-Host "Installing python Package" $package -ForegroundColor Yellow
$arguments = "-m pip install $package"
Start-Process $appPath $arguments -Verb RunAs -Wait
}
Другой возможный способ - использовать conda и pip. Когда-нибудь вы, вероятно, захотите использовать только один из них, но если вам действительно нужно настроить конкретную версию python, я объединяю оба.
Я создаю начальную среду conda с нужным мне питоном. Как здесь https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html. В качестве альтернативы вы можете настроить всю среду, просто используя conda.
conda create -n myenv python=3.6.4
Затем активируйте свою среду с помощью питона, который вам нравится. Эта команда может изменяться в зависимости от ОС.
source activae myenv
Теперь у вас активен питон, и вы можете продолжать использовать conda, но если вам нужно / вы хотите использовать pip:
python -m pip -r requirements.txt
Вот вам и возможный путь.
Обновлено в соответствии с последней версией Ubuntu-LTS 22.04 и для Python 3, однако аналогичные инструкции можно выполнить и для Python 2 с соответствующими изменениями версии.
Вы можете рассмотреть менеджер среды Python pyenv, который позволяет параллельно настраивать различные версии Python без необходимости создания отдельного виртуального окружения или установки отдельного pip.
Инструкции по установке можно найти здесь, и настроить pyenv довольно легко. https://github.com/pyenv/pyenv#readme
Однако для этого потребуется установить необходимые библиотеки, которые можно установить следующим образом:
Системы на базе Redhat
sudo yum install git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel make curl llvm
Linux-системы на базе Ubuntu/Debian
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
После установки необходимых компонентов следуйте инструкциям в README.md. После завершения установки, чтобы проверить версии Python, имеющиеся в вашей системе, выполните в своем терминале следующую команду:
pyenv versions
Обратите внимание, что если вы установили версии Python перед настройкой pyenv, он может не обнаружить установленные версии, и вам, возможно, придется удалить их, включая зависимости. Позаботьтесь о том, чтобы при этом не удалить важные файлы lib.
Чтобы установить новую версию Python
pyenv install <version_number> # like 3.9 for installing python3.9
После установки, чтобы установить версию Python по умолчанию, выполните следующее.
pyenv global <version_number> # to set it globally
pyenv local <version_number> # to set it in the local directory
Вы можете переключаться между установленными версиями Python в любое время с помощьюpyenv global
,pyenv local
, илиpyenv shell
команды с желаемым номером версии.
Обратите внимание, что этот механизм отличается от виртуальной среды, поскольку он позволяет вам управлять несколькими версиями Python на общесистемном уровне, используя при этом другие библиотеки и пакеты системного уровня. Однако у pyenv есть плагины для включения поддержки virtualenv, которые можно установить, следуя инструкциям, перечисленным здесь https://github.com/pyenv/pyenv-virtualenv#readme .
Pyenv можно удалить, просто удалив папку pyenv и отменив все изменения, внесенные в нее..bashrc
,.bash_profile
и/или подобные файлы.
Надеюсь это поможет.
Контекст: Archlinux
Действие:
Установите python2-pip:sudo pacman -S python2-pip
Теперь у вас есть pip2.7:sudo pip2.7 install boto
Тест (в моем случае мне нужно было "boto"):
Запустите следующие команды:
python2
import boto
Успех: без ошибок.
Выход: Ctrl+D
Просто вы можете попробовать это
sudo apt-get install python3-pip
sudo pip3 install MODULE_NAME
Вот подробный ответ.
Вы можете перейти, например, к C:\Python2.7\Scripts, а затем запустить cmd по этому пути. После этого вы можете запустить pip2.7 установить ваш пакет...
Это установит пакет для этой версии Python.
Это, вероятно, совершенно неправильная вещь (я нуб питона), но я просто вошел и отредактировал файл пипса.
#!/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())
Если у вас есть оба python3.6
а также python3.7
установлен и хочу использовать pip
с участием python3.7
по умолчанию вам следует сделать следующее:
Сначала убедитесь, что у вас есть pip
установлен для python3.7
python3.7 -m pip install -U pip
Сейчас же pip3.7
должен быть доступен, поэтому мы редактируем .bashrc
nano ~/.bashrc
добавив к нему следующую строку
alias pip=pip3.7
Чтобы изменения вступили в силу, введите в оболочке:
source ~/.bashrc
Теперь, если вы наберете:
pip --version
вы должны получить:
pip 20.1.1 из /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
что означает, если вы используете, например:
pip install <package>
он установит <package>
за python3.7
Чтобы использовать несколько версий pip, просто введите
pip{версия} и запустить команду
Пример: для питона 3.10
пункт 3.10
список pip3.10
для Питона 3.7
пункт 3.7
список pip3.7
Некоторая полезная информация для отладки этоpip debug
команда. Он показывает расположение интерпретатора Python, к которому он подключен, в 1-й строке (после предупреждения).
$ pip debug
WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
pip version: pip 21.2.4 from /data/akshay/anaconda3/lib/python3.9/site-packages/pip (python 3.9)
sys.version: 3.9.12 (main, Apr 5 2022, 06:56:58)
sys.executable: /data/akshay/anaconda3/bin/python