Как запретить среде anaconda читать библиотеки, установленные в локальной - PullRequest
0 голосов
/ 05 октября 2018

Python пытается прочитать библиотеку, установленную в ~/.local, даже если я работаю в среде anaconda.

> conda create -n testproj python=3.6
> conda activate testproj
> conda install pandas
> python
>>> import pandas as pd

Затем я получаю ImportError

ImportError: C extension: /home/myname/.local/lib/python3.6/site-packages/pandas/ ...

Но еслиЯ меняю разрешение сайта-пакетов

> chmod 000 ~/.local/lib/python3.6/site-packages

Тогда я могу импортировать pandas без каких-либо ошибок.А именно Python смотрит за пределы среды anaconda.

Вопрос: Как я могу запретить Python читать библиотеки вне среды anaconda?

Среда: openSUSE Leap 15.0

РЕДАКТИРОВАТЬ: я обнаружил, что sys.path содержит site-packages в ~/.local.Я не думаю, что линии должны быть там.

['',
 '/home/myname/anaconda3/envs/myproj/bin',
 '/home/myname/anaconda3/envs/myproj/lib/python36.zip',
 '/home/myname/anaconda3/envs/myproj/lib/python3.6',
 '/home/myname/anaconda3/envs/myproj/lib/python3.6/lib-dynload',
 '/home/myname/.local/lib/python3.6/site-packages',
 '/home/myname/anaconda3/envs/myproj/lib/python3.6/site-packages',
 '/home/myname/.local/lib/python3.6/site-packages/IPython/extensions',
 '/home/myname/.ipython']

1 Ответ

0 голосов
/ 06 октября 2018

Я получаю такое же поведение на Windows, чистые среды включают ваши пользовательские локальные пакеты.Это открытый вопрос: https://github.com/conda/conda/issues/7173. conda не поддерживает выполнение того, что вы просите напрямую (пока).

Вы всегда можете просто установить переменную окружения PYTHONNOUSERSITE (для любогозначение), или вызовите ваш интерпретатор с помощью переключателя -s, и вы не получите свои локальные пакеты (~/.local для windows равно C:\Users\<username>\AppData\Roaming\Python\Python36\site-packages):

(test-env) C:\Users\matt>python -m site
sys.path = [
    'C:\\Users\\matt',
    'C:\\Anaconda440\\envs\\test-env\\python36.zip',
    'C:\\Anaconda440\\envs\\test-env\\DLLs',
    'C:\\Anaconda440\\envs\\test-env\\lib',
    'C:\\Anaconda440\\envs\\test-env',
    'C:\\Users\\matt\\AppData\\Roaming\\Python\\Python36\\site-packages',
    'C:\\Users\\matt\\AppData\\Roaming\\Python\\Python36\\site-packages\\some_lib-1.0-py3.6.egg',
    'C:\\Anaconda440\\envs\\test-env\\lib\\site-packages',
]
USER_BASE: 'C:\\Users\\matt\\AppData\\Roaming\\Python' (exists)
USER_SITE: 'C:\\Users\\matt\\AppData\\Roaming\\Python\\Python36\\site-packages' (exists)
ENABLE_USER_SITE: True

против (обратите внимание на переключатель -sи теперь мои локальные пакеты больше не на моем sys.path):

(test-env) C:\Users\matt>python -s -m site
sys.path = [
    'C:\\Users\\matt',
    'C:\\Anaconda440\\envs\\test-env\\python36.zip',
    'C:\\Anaconda440\\envs\\test-env\\DLLs',
    'C:\\Anaconda440\\envs\\test-env\\lib',
    'C:\\Anaconda440\\envs\\test-env',
    'C:\\Anaconda440\\envs\\test-env\\lib\\site-packages',
]
USER_BASE: 'C:\\Users\\matt\\AppData\\Roaming\\Python' (exists)
USER_SITE: 'C:\\Users\\matt\\AppData\\Roaming\\Python\\Python36\\site-packages' (exists)
ENABLE_USER_SITE: False

HTH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...