Проверка неправильной версии Python с помощью Pip в Python3.6

Вопрос или проблема

Я недавно обновился до 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

  1. Установите Miniconda с https://conda.io/miniconda.html
  2. Убедитесь, что conda доступна из вашего шелла, добавив папку с бинарными файлами установки в ваш PATH
  3. Установите любые версии Python, которые вы хотите. Обращайтесь к ним позже с помощью параметра -n (python2 или python3 здесь).
    • Python 2: conda create -n python2 python=2.7 anaconda
    • Python 3: conda create -n python3 python=3.6 anaconda
  4. Переключайте версию Python, выполняя скрипт activate
    • Python 2: source activate python2
    • Python 3: source activate python3

Пример использования

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 позволит вам:

  1. Установить несколько версий Python рядом друг с другом без конфликтов.
  2. Создать изолированные окружения, где каждый проект может иметь свою собственную версию Python и зависимости.

Например, для создания окружения с Python 3.6:

conda create -n mypy36 python=3.6

Затем вы активируете это окружение:

source activate mypy36

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

Практическое применение:

Начните с установки Miniconda:

  1. Загрузите Miniconda с официального сайта Miniconda.
  2. Установите Miniconda, следуя инструкциям.
  3. Добавьте conda в вашу переменную окружения PATH, если это не было сделано автоматически.
  4. Создайте окружения для разных версий Python, используя команды conda, как было показано выше.

После установки и настройки вы сможете легко переключаться между различными версиями Python с помощью команды source activate, тем самым гарантируя, что ни одна версия не будет вмешиваться в работу другой. Это решит проблему, описанную вами, и улучшит управление многоверсионными настройками на одном компьютере.

Таким образом, использование инструмента, такого как Miniconda, позволит вам управлять несколькими версиями Python более эффективно и избежать проблем с конфликтами библиотек или путями.

Оцените материал
Добавить комментарий

Капча загружается...