- sys.path(环境变量)
- 介绍
- 1. path[0]
- 2. 标准库
- 3. 第三方库
- 修改path
- 方法一:函数添加
- 方法二:添加.pth文件
- 方法三:修改环境变量
- sys.path与init.py
- 更多阅读
- 参考
- 介绍
sys.path(环境变量)
介绍
指定模块的搜索路径的字符串列表。
sys模块包含了与python解释器和它的环境有关的函数, 里面有个 sys.path属性。它是一个list.默然情况下python导入文件或者模块的话,他会先在sys.path里找模块的路径。如果没有的话,程序就会报错。
1. path[0]
此列表的第一项,path[0],在程序启动时初始化,是包含用来调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果解释器被交互式地调用,或者脚本是从标准输入读取的),path[0]是空字符串,它引导Python首先在当前目录中搜索模块。
比如在C:User\chenxi3\Destop\Simplify中有一个testSysPath. py
输出是:
C:\Users\chenxi3\Desktop\Simplify
C:\Python27\DLLs
C:\Python27\lib
C:\Python27\lib\plat-win
C:\Python27\lib\lib-tk
C:\Python27
C:\Python27\lib\site-packages
path[0]是C:\Users\chenxi3\Desktop\Simplify,调用python解释器的脚本所在的目录。
如果在命令行中
>>> import sys
>>> print("\n".join(sys.path)
- 1
- 2
path[0]为空,因为没有脚本文件,也就找不到脚本文件所在目录。
2. 标准库
lib目录下(home目录\pythonXX\lib)
3. 第三方库
在lib目录下的site-package目录下(home目录\pythonXX\lib\site-packages)
修改path
一个程序可以根据它自己的目的自由地修改path列表。
场景:在实际开发中,默认包含了当前目录为搜索路径,所以,当前目录下的模块和子模块均可以正常访问。
但是若一个模块需要import平级的不同目录的模块,或者上级目录里面的模块,就可以通过修改path来实现。
修改path常用两种方法:
方法一:函数添加
这是即时生效的方法,就是在模块里面修改sys.path值,这种方法修改的sys.path作用域只是当前进程,进程结束后就失效了。
个人比较推荐这种方法,比较干净, 避免一些冲突问题。
比如现在的代码目录结构:
/src/configs/config.py
/src/common/Database.py
假如Database.py期望导入config. py,则可以增加上级目录到sys.path列表里面:
最好加个判断,避免重复加入。
方法二:添加.pth文件
在site-packages/ 增加一个路径文件,如mypkpath.pth,必须以.pth为后缀,将模块的路径写进去,一行一个路径,写上要加入的模块文件所在的目录名称。这种方法一劳永逸, 简单暴力。
举个例子,将/tmp/增加到sys.path
首先cd到指定python的sit-packages/目录下,然后创建一个文件,例如test.pth(注意后缀要为.pth),在文件中增加/tmp/路径信息,保存退出。
python2.7/site-packages/test.pth文件中添加一条:
/tmp/
- 1
方法三:修改环境变量
添加系统环境变量PYTHONPATH,在这个环境变量中输入相关的路径,不同的路径之间用逗号(英文的!)分开。路径会自动加入到sys.path中。
sys.path与init.py
_ init_ .py文件将一个文件夹转化为一个package,这对于创建一个模块的层次结构是很有用的,这样就可以使用这样的导入语句:
import mymodule.cool.stuff
- 1
如果没有package,这样就不行了。
假如有文件夹mymodule,mymodule下有文件夹cool,cool目录下有stuff.py脚本
将环境变量C:\mymodule加到sys.path中,在mymodule目录下简历_ init_ .py里面写上import cool(文件夹),在cool目录下新建_ init_ .py内容为空
运行时,就只需import mymodule.cool.stuff即可。
注:不需要增加子目录,因为在目录中我们有_ init_ .py
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
收藏
海报
分享链接:https://blog.piaoyun.com/serverzhishi/server/2020/39.html 分享到 :
src
感谢您的来访,获取更多精彩文章请收藏本站。
1. 资源都是经过站长或作者收集测试修改后发布分享。转载请在文内以超链形式注明出处,谢谢合作!
2. 本站除原创内容,其余所有内容均收集自互联网,仅限用于学习和研究目的,本站不对其内容的合法性承担任何责任。如有版权内容,请通知我们或作者删除,其版权均归原作者所有,本站虽力求保存原有版权信息,但因众多资源经多次转载,已无法确定其真实来源,或已将原有信息丢失,所以敬请原作者谅解!
3. 本站用户所发布的一切资源内容不代表本站立场,并不代表本站赞同其观点和对其真实性负责,若您对本站所载资源作品版权归属存有异议,请留言附说明联系邮箱,我们将在第一时间予以处理 ,同时向您表示歉意!为尊重作者版权,请购买原版作品,支持您喜欢的作者,谢谢!
4. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客如有发现请立即向站长举报;本站资源文件大多存储在云盘,如发现链接或图片失效,请联系作者或站长及时更新。