установка пакета pip и virtualenv

Доброе утро!

Краткое резюме: у меня проблема с pip и virtualenv. Независимо от того, активирован ли мой virtualenv, мой pip устанавливает пакеты в пакеты сайтов venv, но когда за пределами моего venv python читает пакеты из совершенно другой папки (подробности ниже), что делает его так, что я не могу устанавливать пакеты для моего python вне венв. Я предполагаю, что мне нужно убедиться, что pip устанавливается в разных местах, внутри или за пределами venv. Кажется, я не могу найти файл конфигурации для своего пункта, где это обозначено, и большинство wabpages, на которые я смотрел, либо не имеют отношения к моей проблеме, либо находятся выше моей головы ...

Некоторые детали (я Я все еще новичок в работе с ubuntu, linux и данными python, поэтому, если мне не хватает какой-либо важной информации, скажите об этом, и я постараюсь заполнить то, чего не хватает): Вне venv:

$which python

приводит к

usr/bin/python

, а

$which pip

дает

/home/username/.local/bin/pip

. Я обнаружил, что пакет сайта python может определить, где он ищет пакеты, так что это результат при его использовании (я также включаю то, что уведомило меня о проблема):

$ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
>>> import site
>>> print(site.getsitepackages())
['/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages']
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
>>> exit()
$ pip install numpy
Requirement already satisfied: numpy in ./projectFolder/venv/lib/python3.6/site-packages (1.17.4)

Просматривая каталоги, я не могу найти каталог site-package для python, но могу найти dist-packages (как указано выше), в то время как в venv есть site-packages, где pip устанавливает пакеты.

Активация Venv дает следующие результаты:

(venv)$ which python
/home/username/projectFolder/venv/bin/python
(venv)$ which pip
/home/username/projectFolder/venv/bin/pip

Использование сайта под venv дает:

(venv)$ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
>>> import site
>>> print(site.getsitepackages())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'site' has no attribute 'getsitepackages'
0
задан 25 December 2019 в 13:59

1 ответ

Проблема хорошо описана здесь мейнтейнером virtualenv: https://github.com/pypa/virtualenv/issues/737#issuecomment-319078189

Процитирую его комментарий здесь:

Проблема (насколько я понимаю) заключается в том, что virtualenv реализует собственный версия site.py, которая не отслеживает основную версию Python отлично (это проблема № 355, упомянутая выше - если вы перейдите по этой ссылке и ссылку на различные вопросы, связанные с там вы получите фон).

Исправить это не так просто, как «синхронизировать с основным site.py», потому что нам нужно поддерживать несколько версий Python, и site.py изменился между ними.

0
ответ дан 12 May 2020 в 20:18

Другие вопросы по тегам:

Похожие вопросы: