"which" не может найти пакеты, установленные с помощью pip (WSL) - PullRequest
0 голосов
/ 07 октября 2019

Я пытался начать писать Python на WSL, но в целом это было очень грязно. Я знаю, что для установки пакетов я хочу использовать pip3, но любые команды pip3 приводят к

Traceback (most recent call last): File "/usr/bin/pip3", line 9, in <module> from pip import main ImportError: cannot import name 'main'

Мой обходной путь заключается в использовании следующей команды для установки, которая сработал :

python3 -mpip install --user somePackageName

Моя настоящая путаница связана с тем, что команда which не находит пакеты, установленные вышеуказанной командой. Тем не менее, я знаю, что они там, как они появляются, когда я запускаю 'python3 -mpip freeze'. Это потому, что они установлены локально?

(Кроме того, если кто-то имеет опыт работы с Python и pip в WSL и может взвесить, как выполнить настройку среды Python, чтобы избежать подобных проблем,было бы очень полезно.)

Спасибо!

1 Ответ

0 голосов
/ 07 октября 2019

Попробуйте: python -m site

(возможно, заменив python на python3 и т. Д.)

Вы должны получить короткий вывод со следующим блоком,

Из Windows:

sys.path = [
    '<your current working directory>',
    'C:\\Python38a2\\python38.zip',
    'C:\\Python38a2\\DLLs',
    'C:\\Python38a2\\lib',
    'C:\\Python38a2',
    'C:\\Python38a2\\lib\\site-packages',
]

Из WSL:

sys.path = [
    '<your current working directory>',
    '/usr/lib/python37.zip',
    '/usr/lib/python3.7',
    '/usr/lib/python3.7/lib-dynload',
    '/home/<username>/.local/lib/python3.7/site-packages',
    '/usr/local/lib/python3.7/dist-packages',
    '/usr/lib/python3/dist-packages',
]

Здесь вы можете искать установленные пакеты.

Порядок здесь - это приоритет импорта (более ранние записи «козыри», последующие)

Для pip install ed-пакетов вам обычно нужно искать в каталоге site-packages.

Для <package manager> install ed-пакетов вам обычно нужно искать в каталоге dist-packages.

Наконец, which обычно используется для поиска исполняемых файлов на вашем$PATH переменная окружения (и, по крайней мере для меня, требует, чтобы у них был установлен исполняемый бит для отображения в результатах).

Здесь вы ищете что-то другое, модули или пакеты, которые можно импортироватьпо Python. Другими словами, модули или пакеты на вашем $PYTHONPATH.

Это два разных типа "путей".

Внутри вашего интерпретатора $PYTHONPATH отображается на sys.path и $PATH отображается на os.environ['PATH'].

...