gpt4 book ai didi

python - 如何防止anaconda环境读取本地安装的库

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:24 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com