Вопрос или проблема
Я недавно обновился до Python 3.6 на Ubuntu 16.04. Теперь у меня есть Python 2.7, 3.5 и 3.6 на одной системе. У меня был pip (по умолчанию для v2.7) и pip3 (по умолчанию для v3.5), а затем я переустановил pip3 согласно этой ссылке: https://stackoverflow.com/a/44254088/3123703 .
Теперь я на пути к установке всех библиотек, которые использую для нового Python 3.6. Но по какой-то причине pip3.6 проверяет наличие библиотек в папках Python 3.5:
$ sudo pip3.6 install numpy
Требование уже удовлетворено: numpy в /usr/local/lib/python3.5/dist-packages
Также:
$ pip3 --version
pip 9.0.1 из /home/<user>/.local/lib/python3.6/site-packages (python 3.6)
$ pip3.6 --version
pip 9.0.1 из /home/<user>/.local/lib/python3.6/site-packages (python 3.6)
Есть ли способ заставить pip3.6 не искать в папках Python 3.5? Или мне придется полностью удалить Python 3.5 и Python 3.6 и начать с нуля?
К вашему сведению, я не спрашиваю о конкретном пакете, так как numpy был просто примером здесь.
Выделение вашего вопроса:
Есть ли способ заставить pip3.6 не искать в папках Python 3.5? Или мне придется полностью удалить Python 3.5 и Python 3.6 и начать с нуля?
Я рекомендую не устанавливать несколько версий Python на уровне системы, вместо этого использовать специальный инструмент для Python. Я использую Anaconda, которая отлично подходит для научных вычислений. Существуют и другие инструменты.
Как использовать установку Python из вашей домашней директории
- Вы устанавливаете версию Python, которую хотите использовать, в отдельную директорию (например,
~/anaconda3
) - Добавьте папку с бинарными файлами из вашей установки Python первой в ваш
PATH
.
Как работать с несколькими версиями Python с Anaconda
- Установите Miniconda с https://conda.io/miniconda.html
- Убедитесь, что
conda
доступна из вашего шелла, добавив папку с бинарными файлами установки в вашPATH
- Установите любые версии Python, которые вы хотите. Обращайтесь к ним позже с помощью параметра -n (
python2
илиpython3
здесь).- Python 2:
conda create -n python2 python=2.7 anaconda
- Python 3:
conda create -n python3 python=3.6 anaconda
- Python 2:
- Переключайте версию Python, выполняя скрипт
activate
- Python 2:
source activate python2
- Python 3:
source activate python3
- Python 2:
Пример использования
teodorlu@XPS13 ~ % conda env list
# conda environments:
#
python2 /home/teodorlu/anaconda2/envs/python2
python3 /home/teodorlu/anaconda2/envs/python3
teodorlu@XPS13 ~ % source activate python2
teodorlu@XPS13 ~ % which python
/home/teodorlu/anaconda2/envs/python2/bin/python
teodorlu@XPS13 ~ % python
Python 2.7.13 |Anaconda 4.4.0 (64-бит)| (по умолчанию, 20 дек 2016 г., 23:09:15)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] на linux2
Введите "help", "copyright", "credits" или "license" для дополнительной информации.
Anaconda предоставлена Continuum Analytics.
Пожалуйста, ознакомьтесь с: http://continuum.io/thanks и https://anaconda.org
>>> import numpy as np
>>> np.__file__
'/home/teodorlu/anaconda2/envs/python2/lib/python2.7/site-packages/numpy/__init__.pyc'
>>>
teodorlu@XPS13 ~ % source activate python3
teodorlu@XPS13 ~ % which python
/home/teodorlu/anaconda2/envs/python3/bin/python
teodorlu@XPS13 ~ % python
Python 3.6.1 |Anaconda 4.4.0 (64-бит)| (по умолчанию, 11 мая 2017 г., 13:09:58)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] на linux
Введите "help", "copyright", "credits" или "license" для дополнительной информации.
>>> import numpy as np
>>> np.__file__
'/home/teodorlu/anaconda2/envs/python3/lib/python3.6/site-packages/numpy/__init__.py'
Ответ или решение
Чтобы эффективно управлять несколькими версиями Python на одном компьютере, особенно когда у вас есть Python 2.7, 3.5 и 3.6, следует использовать инструменты, которые изолируют окружения и пакеты. Это позволит избежать конфликтов, таких как описанная ситуация, когда pip3.6
проверяет библиотеки в папках Python 3.5. Рассмотрим, как решить эту проблему на уровне теории, примера и практического применения.
Теория:
Для работы с несколькими версиями Python рекомендуется использовать инструмент управления окружением, например, Anaconda или его более легкий вариант — Miniconda. Эти инструменты создают изолированные окружения, в которых каждая версия Python и её пакеты находятся отдельно друг от друга. Таким образом, вы можете специально установить и использовать версии и пакеты Python в нужном размере.
Пример:
Предположим, вы решили использовать Miniconda для управления своими Python окружениями. Установка Miniconda позволит вам:
- Установить несколько версий Python рядом друг с другом без конфликтов.
- Создать изолированные окружения, где каждый проект может иметь свою собственную версию Python и зависимости.
Например, для создания окружения с Python 3.6:
conda create -n mypy36 python=3.6
Затем вы активируете это окружение:
source activate mypy36
Теперь при установке пакетов с pip
они будут устанавливаться именно в это окружение.
Практическое применение:
Начните с установки Miniconda:
- Загрузите Miniconda с официального сайта Miniconda.
- Установите Miniconda, следуя инструкциям.
- Добавьте
conda
в вашу переменную окруженияPATH
, если это не было сделано автоматически. - Создайте окружения для разных версий Python, используя команды conda, как было показано выше.
После установки и настройки вы сможете легко переключаться между различными версиями Python с помощью команды source activate
, тем самым гарантируя, что ни одна версия не будет вмешиваться в работу другой. Это решит проблему, описанную вами, и улучшит управление многоверсионными настройками на одном компьютере.
Таким образом, использование инструмента, такого как Miniconda, позволит вам управлять несколькими версиями Python более эффективно и избежать проблем с конфликтами библиотек или путями.