在conda的环境中运行python代码,却指向该环境外的$HOME/.local/lib/.../site-packages
问题描述我在一个环境中安装的是numpy1.16.2,但是运行代码的时候显示的是1.17版本,就很奇怪。按理说,能找到包就没啥问题,但是我需要用到的另外一个包不兼容numpy 1.17。原因分析In [1]: import numpy as npIn [2]: print(np.__version__)1.17.4In [3]: print(np.__path__)['/home/yyzhong/
·
问题描述
我在一个环境中安装的是numpy1.16.2,但是运行代码的时候显示的是1.17版本,就很奇怪。按理说,能找到包就没啥问题,但是我需要用到的另外一个包不兼容numpy 1.17。
原因分析
In [1]: import numpy as np
In [2]: print(np.__version__)
1.17.4
In [3]: print(np.__path__)
['/home/yyzhong/.local/lib/python3.7/site-packages/numpy']
从最后一行输出结果可以看到,所用的numpy指向了 $HOME/.local/lib/python3.7/site-packages/numpy,而不是 $HOME/anaconda3/envs/环境名/lib/python3.7/site-packages.
通过查看sys.path发现,sys.path包含了.local/lib/…/site-packages
In [4]: import sys
In [5]: sys.path
Out[5]:
['/home/yyzhong/anaconda3/envs/环境名/bin',
'/home/yyzhong/anaconda3/envs/环境名/lib/python37.zip',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7/lib-dynload',
'',
'/home/yyzhong/.local/lib/python3.7/site-packages',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7/site-packages',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7/site-packages/IPython/extensions',
'/home/yyzhong/.ipython']
解决
最后在网上找到的一个临时解决方案,就是设置PYTHONNOUSERSITE环境变量。
#进入环境
$ conda activate 环境名
#查看环境变量
$ conda env config vars list
#设置环境变量
$ conda env config vars set PYTHONNOUSERSITE=1
#修改环境变量后需要重启环境
$ conda activate 环境名
#看看该成功了没有
$ conda env config vars list
再次输出sys.path
In [1]: import sys
In [2]: sys.path
Out[2]:
['/home/yyzhong/anaconda3/envs/环境名/bin',
'/home/yyzhong/anaconda3/envs/环境名/lib/python37.zip',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7/lib-dynload',
'',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7/site-packages',
'/home/yyzhong/anaconda3/envs/环境名/lib/python3.7/site-packages/IPython/extensions',
'/home/yyzhong/.ipython']
.local/lib已经没了
更多推荐


所有评论(0)