1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python修改PYTHONPATH环境变量

python修改PYTHONPATH环境变量

时间:2023-06-12 00:49:39

相关推荐

python修改PYTHONPATH环境变量

查看当前python环境

我们进入到conda中的mmlab环境中,运行下面命令

(mmlab) wangyh@Ti-Sev:~$ python -m sitesys.path = ['/home/wangyh','/home/wangyh/anaconda3/envs/mmlab/lib/python310.zip','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/lib-dynload','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/site-packages',]USER_BASE: '/home/wangyh/.local' (exists)USER_SITE: '/home/wangyh/.local/lib/python3.10/site-packages' (doesn't exist)ENABLE_USER_SITE: True

可以看到当前python环境和相关包的信息,也就是sys.path中的内容,有运行命令的当前目录/home/wangyh,还有我当前环境mmlab的安装目录xxx/envs/mmlab/lib/xxx,也就是说默认的python在导入module的时候,默认从当前目录下以及当前环境目录下来搜索

为什么要添加python环境?

假设我们当前的程序目录如下所示

- data- hello- hello.py- data2- test.py

我们进入到data2文件夹下要运行test.py文件,用的环境还是上面的mmlab,那么此时我们的环境变量如下所示

'/data2''/home/wangyh/anaconda3/envs/mmlab/lib/python310.zip''/home/wangyh/anaconda3/envs/mmlab/lib/python3.10''/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/lib-dynload''/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/site-packages'

第一个环境变为了/data2是因为test.pydata2目录下,因为环境还是mmlab所以剩下的python环境不变,现在hello.py中有一个greet函数,我们想在test.py中引入此函数,即from hello import greet,但是此时会报错,No module named xxx,这是因为编译器会自动在上述环境变量中去寻找hello,但是环境变量中没有hello文件夹,此时就需要在python环境变量中添加/data/hello路径了

添加python环境

临时添加

程序中加入sys库

>>> import sys>>> sys.path['', '/home/wangyh/anaconda3/envs/mmlab/lib/python310.zip', '/home/wangyh/anaconda3/envs/mmlab/lib/python3.10', '/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/lib-dynload', '/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/site-packages']>>> sys.path.append('/data/hello')>>> sys.path['', '/home/wangyh/anaconda3/envs/mmlab/lib/python310.zip', '/home/wangyh/anaconda3/envs/mmlab/lib/python3.10', '/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/lib-dynload','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/site-packages', '/data/hello']

可以看到此时/data/hello就添加到python环境变量中去了,一旦脚本运行完毕,此环境变量就失效了,如果要再次使用需要再次运行

export命令

在终端中添加环境变量

export PYTHONPATH=/data/hello:$PYTHONPATH

或者export PYTHONPATH=$PYTHONPATH:/data/hello

(mmlab) wangyh@Ti-Sev:~$ python -m sitesys.path = ['/home/wangyh','/home/wangyh/anaconda3/envs/mmlab/lib/python310.zip','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/lib-dynload','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/site-packages',]USER_BASE: '/home/wangyh/.local' (exists)USER_SITE: '/home/wangyh/.local/lib/python3.10/site-packages' (doesn't exist)ENABLE_USER_SITE: True(mmlab) wangyh@Ti-Sev:~$ export PYTHONPATH=/data/hello:$PYTHONPATH(mmlab) wangyh@Ti-Sev:~$ python -m sitesys.path = ['/home/wangyh','/data/hello','/home/wangyh/anaconda3/envs/mmlab/lib/python310.zip','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/lib-dynload','/home/wangyh/anaconda3/envs/mmlab/lib/python3.10/site-packages',]USER_BASE: '/home/wangyh/.local' (exists)USER_SITE: '/home/wangyh/.local/lib/python3.10/site-packages' (doesn't exist)ENABLE_USER_SITE: True

可以看到添加python环境变量之后多了/data/hello,但是只对于当前终端生效,一旦终端关闭立刻失效,如果要重新添加需要重新export

永久生效

修改.bashrc文件

# 修改用户主目录下的.bashrc文件vim ~/.bashrc# 添加之前的环境变量export PYTHONPATH=/data/hello:$PYTHONPATH# 保存退出,更新环境变量使其生效source ~/.bashrc

此方法只适用于当前用户,不适用于所有用户,比如别人登录他们的账号,他的环境变量不受影响

修改pth文件

还有一种方法是修改当前环境下的一个xx/anaconda3/envs/xxx/lib/python3.x/site-packages/xxx.pth文件,这个我没试过就不写了,主要是懒

注意!!!!!根据我的经验,不知道是设置问题还是操作问题,如果你的python环境变量不是当前conda环境的路径,比如本来应该是xxx/envs/mmlab/xxx,但是变成了xxx/anaconda3/lib/python3.x/xxx这种路径,那么多半是终端开的比较多啥的。。。或者开了好多窗口export乱了,终端都关了重新打开就好了,当时的我反正一脸疑惑。。。这还会带来一个问题,就是如果你在当前环境安装包的话,他会安装到别的地方,所以就直接把终端都关了重新打开来解决问题就行,嗯

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。