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
包含 ~/.local
下的 site-packages
。我不认为这些线应该在那里。
['',
'/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']
最佳答案
我在 Windows 上得到了相同的行为,干净的环境包括您的用户本地包。这是一个 Unresolved 问题: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.
关于python - 如何防止anaconda环境读取本地安装的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52655887/