模块搜索路径
1.1、说明:
- 导入模块解释器首先搜索内置模块;
- 如无将在变量sys.path 给出目录列表中搜索,列表索引先后决定搜索优先级。
1.2、sys.path列表优先级排序:
- 第一优先级为当前执行脚本的目录(或当前目录)
- 第二优先级为PYTHONPATH;
- 第三优先级为安装位置。
1.3、动态增加路径 --临时生效
sys.path.append(r'/主目录/filename')#加在sys.path的最后
sys.path.append(os.path.expanduser(r'/主目录/filename'))
sys.path.insert(0,PATH/filename) #加在sys.path的最前
1.4、改变当前路径
os.chdir(r'D:\atcy')
os.chdir(sys.path[0])#改变当前路径
print(os.path.abspath('test.py'))# 文件操作现在是相对于D:\atcy #D:\atcy\test.py
备注:路径拆分合并
path,math=os.path.split(os.path.realpath(__file__))# ('D:\\atcy', 'test.py')
a=os.path.join(path,math) # D:\atcy\test.py
2.当前目录,脚本目录
2.0、os.curdir
os.curdir=='.' #True
2.1、获取当前目录
a01 = os.getcwd() #主程序绝对路径(子程序相同) # D:\atcy\atcy 和平台有关
a10 = os.path.abspath('.') #主程序绝对路径(子程序相同) # D:\atcy\atcy
a13 = os.path.realpath('.')
# ===================================================================================
2.2、os.path.dirname获取当前目录或上级目录
os.path.dirname(r'D:\atcy\atcy') #返回上级目录'D:\\atcy'
os.path.dirname(r'D:/atcy/atcy/a_path.py')#返回当前目录 'D:/atcy/atcy'
a07 = os.path.dirname(a05) #当前执行脚本的上级目录--主程序:D:/atcy 子程序:D:/atcy/atcy
a21 = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))#当前执行脚本的上级目录(结果同上)
2.3、__file__当前执行脚本路径+文件名
a02 = __file__ #当前执行脚本路径--主程序: D:/atcy/atcy/a_path.py
#当前执行脚本路径--子程序: D:/atcy/atcy/Package_A/aa_path.py
a08 = os.path.abspath(__file__) #当前执行脚本路径--主程序:D:\atcy\atcy\a_path.py
# --子程序:D:\atcy\atcy\Package_A\aa_path.py
a09 = os.path.realpath(__file__)#当前执行脚本路径--主程序:D:\atcy\atcy\a_path.py
# --子程序:D:\atcy\atcy\Package_A\aa_path.py
# ===================================================================================
2.4、__file__当前执行脚本路径
a05 = os.path.dirname(__file__)#当前执行脚本路径--主程序:D:/atcy/atcy
# --子程序:D:/atcy/atcy/Package_A
a12 = os.path.abspath(a05) #当前执行脚本路径(结果同上)
a15 = os.path.realpath(a05) #当前执行脚本路径(结果同上)
a16 = os.path.dirname(a09) #当前执行脚本路径(结果同上)
a17 = os.path.split(a09)[0] #当前执行脚本路径(结果同上) 和平台无关
2.5.当前路径上级路径
a06 = os.path.dirname('.') #为空
a20 = os.path.abspath('..') #当前目录的上级目录--主程序:D:\atcy 子程序:D:\atcy
a23 = os.path.abspath(os.path.join(os.getcwd(), ".."))#当前目录的上级目录(结果同上)
2.6、当前路径上上级路径
a30 = os.path.abspath(os.path.join(r'D:\a01\a02\a03', "../..")) # D:\a01
a31 = os.path.abspath(os.path.join(r'D:\a01\a02', "../..")) # D:\
a32 = os.path.abspath(os.path.join(r'D:\a01', "../..")) # D:\
a33 = os.path.abspath(os.path.join(r'D:', "../..")) # D:\
2.7、系统路径
a34 = sys.path # 获取系统路径;由环境变量PYTHONPATH初始化得到
"""['','C:\\ProgramData\\Anaconda3\\python36.zip',...]"""
a35 = sys.path[0] # 当前脚本所在目录 # 主程序:D:\atcy\atcy 子程序: D:\atcy\atcy
2.8、sys.argv
a36 = sys.argv # 传给Python脚本指令参数列表 #['D:/atcy/atcy/a_path.py'] #['D:/atcy/atcy/a_path.py']
a37 = sys.argv[0] # 脚本名字--当前执行脚本的绝对位置(命令行执行为空) D:/atcy/test.py 和平台有关
# 主程序: D:/atcy/atcy/a_path.py 子程序: D:/atcy/atcy/a_path.py
3、site模块
# 将特定于站点的路径附加到模块搜索路径,并添加一些内置
# 本模块无论在什么地方执行返回结果相同
a40 = site.PREFIXES # site-packages目录前缀列表
# ['C:\\ProgramData\\Anaconda3', 'C:\\ProgramData\\Anaconda3']
a41 = site.ENABLE_USER_SITE # 显示用户site-packages目录状态:False禁用
# True 意味着它已启用并已添加到sys.path
a42 = site.USER_SITE # 运行Python的用户站点包的路径
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python36\\site-packages'
a43 = site.USER_BASE # 用户站点包的基本目录的路径
# Distutils使用此值来计算用户安装方案的脚本,数据文件,Python模块等的安装目录。
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python'
a40=site.main() # 将所有标准站点特定目录添加到模块搜索路径。导入此模块时会自动调用此函数
a44 = site.getsitepackages() # 返回包含所有全局site-packages目录的列表。
"""
['C:\\ProgramData\\Anaconda3',
'C:\\ProgramData\\Anaconda3\\lib\\site-packages']
"""
a45 = site.getuserbase() # 返回用户基目录的路径USER_BASE
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python'
a46 = site.getusersitepackages() # 返回特定于用户的site-packages目录的路径USER_SITE
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python36\\site-packages'
site.addsitedir(sitedir, known_paths=None)
# 将目录添加到sys.path并处理其.pth文件。常用于sitecustomize或usercustomize
4、命令行执行
"""D:\atcy>python test.py""" # D:\atcy\test.py...
"""D:\atcy>./test.py""" # 错误
"""D:\atcy>.\test.py或D:\atcy>test.py"""# 打开脚本文件
5、获取系统的各种信息:#environ是一个字符串所对应环境的映像对象
1)设置环境变量:
os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型
os.putenv('环境变量名称','环境变量值')
# 实例:
os.environ ['HSRL_INSTRUMENT'] ='gvhsrl'
os.environ ['HSRL_CONFIG'] = os.path.expanduser(r '/主目录/hsrl_config')
2)查看环境变量:
os.environ
'''environ({'ALLUSERSPROFILE': 'C:\\ProgramData',...,
'HSRL_INSTRUMENT': 'gvhsrl', 'HSRL_CONFIG': '/主目录/ hsrl_config'})
'''
dict(os.environ)#转字典
3)获取系统环境变量--key字段详解:
os.environ['HOMEPATH'] #当前用户主目录。Out[26]: '\\Users\\Administrator'
os.environ['TEMP'] #临时目录路径Out[27]: 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp'
os.environ['PATHEXT'] #可执行文件Out[28]: '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'
os.environ['SYSTEMROOT'] #系统主目录Out[29]: 'C:\\Windows'
os.environ['LOGONSERVER'] #机器名Out[30]: '\\\\PC-201706181426'
os.environ['PROMPT'] #设置提示符Out[31]: '(base) $P$G'
os.environ['USERNAME'] # 'Administrator'
6.修改 PYTHONPATH 变量 #永久生效;尽量不要使用
SET PYTHONPATH=%cd%;%cd%\slim1#重新加载shell
改用:电脑中添加环境变量 1)cmd->set path=%path%;C:\Python# C:\Python 是Python的安装目录 2) Rapid Environment Editor:windows环境变量编辑软件中修改 # 下载地址:https://www.rapidee.com/en/download 3)[右键单击]计算机>属性>高级>环境变量-->单击“系统变量”下的[新建] 变量名称:PY_HOME,变量值:C:\ path \ to \ python \ version -->单击[确定] 找到“Path”系统变量,然后单击[编辑]-->将以下内容添加到现有变量: %PY_HOME%;%PY_HOME%\库;%PY_HOME%\的DLL;%PY_HOME%\ LIB \ LIB-TK;-->单击[确定]
7.增加 .pth 文件 -- 最简单永久生效(推荐)# 在site-packages/dist-packages添加一个路径文件xxx.pth
在C:\ProgramData\Anaconda3\lib\site-packages 下添加xxx.pth:
/home/wang/workspace#每个路径一行,文件名任意;模块文件所在的目录名称