问题描述

我在一个环境中安装的是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已经没了

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐