python修改path环境变量_python修改sys.path的三种⽅法python修改sys.path的三种⽅法
sys.path是⼀个列表,存放的是python搜索模块时可以搜索的路径,启动python脚本时,会将执⾏当前命令所在的⽬录添加到这个列表中,⽽且是在列表的最前⾯,正是因为这个操作,你才能在⾃⼰的项⽬⾥引⽤⾃⼰编写的模块,当模块名称与第三⽅模块或系统模块冲突时,优先引⽤项⽬⾥的模块。通常,sys.python⾥的内容如下所⽰:
>>> import sys
>>> sys.path
['', '/root/.pyenv/versions/3.6.5/lib/python36.zip', '/root/.pyenv/versions/3.6.5/lib/python3.6',
'/root/.pyenv/versions/3.6.5/lib/python3.6/lib-dynload', '/root/.pyenv/versions/3.6.5/lib/python3.6/site-packages']
这⾥,你重点关注site-packages, 我们安装的第三⽅库和模块都放在了这⾥。将sys.path设计为⼀个可变的列表,⽽不是元组,就是考虑到了开发⼈员有很强的动机和需要去修改模块的搜索路径和顺序。
⽅法1,直接修改sys.path列表
设想,如果你的系统允许⽤户提交⾃定义的python脚本,那么你可以为此专门创建⼀个⽬录⽤于存放这些脚本,并将这个⽬录加⼊到sys.path中,这样,在你的系统⾥,你可以像引⽤其他模块⼀样去引⽤⽤户上传的python脚本来执⾏他们,这就是本⽂所提到的修改sys.path的三种⽅法中的⼀个,你只需要使⽤sys.path.append⽅法将⽬录添加即可。
⽅法2, 创建.pth⽂件
另⼀种修改sys.path的⽅法时在site-packages⽬录新建⼀个.pth⽂件,帮在⽂件中加⼊搜索模块的路径
/root/test
重新启动⼀个python交互式解释器,输出sys.path,你可以看到/root/test⽬录也在其中。
⽅法3,设置PYTHONPATH环境变量
第三种修改⽅法,通过PYTHONPATH环境变量,我使⽤export 命令设置该环境变量
[root@sheng studyflask]# export PYTHONPATH=/root/studyflask
[root@sheng studyflask]# echo $PYTHONPATH
/
root/studyflask
这种设置⽅法仅仅是为了验证是否凑效,退出终端后,环境变量就会失效,如果你想永久⽣效,可以在/etc/profile,或者.bashrc中进⾏设置,设置完PYTHONPATH后,启动⼀个新的python交互式解释器,输出sys.path
>>> import sys
>>> sys.path
['', '/root/studyflask', '/root/.pyenv/versions/3.6.5/lib/python36.zip', '/root/.pyenv/versions/3.6.5/lib/python3.6',
'/root/.pyenv/versions/3.6.5/lib/python3.6/lib-dynload', '/root/.pyenv/versions/3.6.5/lib/python3.6/site-packages']
4, 三种⽅法⽐较
环境变量path误删有影响吗从灵活性上⽐较,⽅法1最为灵活,搜索⽬录的位置可以通过调⽤列表的insert⽅法⾃由控制,⽽⽅法2所添加的搜索⽬录会加在sys.path 的末尾,⽅法3会加在列表的开头。
从有效范围上⽐较,⽅法的⽣效范围最⼩,你在脚本⾥对sys.path进⾏修改,那么它只对所修改脚本的执⾏时的进程有效果,其他脚本在执⾏时不会受到影响,⽅法2的有效范围就要⼤⼀些,假如你有多个python版本,但只在某⼀个python的site-packages⾥新建了.pth⽂件,那么只有当你使⽤这个python作为启动python脚本的应⽤程序时,.pth才会⽣效。⽣效范围最⼤的是PYTHONPATH,⼀旦设置⽣效,不论你⽤系统上的哪个python来执⾏脚本,它都⽣效,因为python在执⾏脚本时会⾃动加载这个环境变量,只要环境变量可以访问,就必然⽣效。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论