python指定路径在哪_Python的sys.path在哪里初始化?

545862120001766302200220-100-100.jpg

慕斯709654

Python真的很难智能地设置sys.path。如何设置可能变得非常 复杂。下面的指南是一个打了折扣的,有点不完全,有些-错,但希望-有用的指南时Python会什么的使用会发生什么的职级和文件Python程序员的初始值的sys.path, sys.executable,sys.exec_prefix,和sys.prefix在正常的python安装上。首先,python最好根据操作系统告诉它在文件系统上找出它的实际物理位置。如果操作系统只是说“python”正在运行,它会发现自己在$ PATH中。它解决了任何符号链接。完成此操作后,它找到的可执行文件的路径将用作值sys.executable,no ifs,ands或buts。接下来,确定用于初始值sys.exec_prefix和 sys.prefix。如果pyvenv.cfg在同一目录中调用了 一个文件sys.executable或者一个目录,则python会查看它。不同的操作系统对此文件执行不同的操作。python查找的此配置文件中的一个值是配置选项home = 。Python将使用此目录而不是包含sys.executable 动态设置sys.prefix稍后的初始值的目录。如果applocal = true设置出现在pyvenv.cfgWindows上的 文件中,而不是home = 设置中,sys.prefix则将设置为包含的目录sys.executable。接下来,PYTHONHOME检查环境变量。在Linux和Mac上, sys.prefix并sys.exec_prefix设置为PYTHONHOME环境变量(如果存在),取代其中的任何home = 设置pyvenv.cfg。在Windows上, sys.prefix并sys.exec_prefix设置为PYTHONHOME环境变量(如果存在),除非存在home = 设置pyvenv.cfg,而是使用该设置。否则,这些sys.prefix并sys.exec_prefix通过从位置倒着行走中发现sys.executable,或home通过指定目录pyvenv.cfg(如有)。如果lib/python/dyn-load在该目录或其任何父目录中找到该文件,则该目录将设置为sys.exec_prefix在Linux或Mac上。如果lib/python/os.py在目录或其任何子目录中找到该文件 ,则该目录设置为sys.prefix在Linux,Mac和Windows上,并sys.exec_prefix设置为与Windows 上相同的值 sys.prefix。如果applocal = true已设置,则在Windows上跳过整个步骤 。使用目录,sys.executable或者如果home设置pyvenv.cfg,则使用目录替代初始值sys.prefix。如果它找不到这些“里程碑”文件或sys.prefix尚未找到,则python设置sys.prefix为“后备”值。Linux和Mac,例如,使用预编译的缺省值的数值sys.prefix和sys.exec_prefix。Windows等待直到sys.path完全弄清楚为其设置回退值 sys.prefix。然后,(你们一直在等待的东西,)python确定要包含的初始值sys.path。python正在执行的脚本的目录被添加到sys.path。在Windows上,这始终是空字符串,它告诉python使用脚本所在的完整路径。PYTHONPATH环境变量的内容(如果已设置)将被添加到sys.path,除非您在Windows上并且applocal设置为true pyvenv.cfg。将添加到/lib/python35.zipLinux / Mac和os.path.join(os.dirname(sys.executable), "python.zip")Windows 上 的zip文件路径sys.path。如果在Windows上没有applocal = true设置pyvenv.cfg,则HK_CURRENT_USER\Software\Python\PythonCore\\PythonPath\添加注册表项子项的内容( 如果有)。如果在Windows上并且没有applocal = true设置pyvenv.cfg,并且sys.prefix找不到,则添加注册表项的核心内容(HK_CURRENT_USER\Software\Python\PythonCore\\PythonPath\如果存在);如果在Windows上没有applocal = true设置pyvenv.cfg,则HK_LOCAL_MACHINE\Software\Python\PythonCore\\PythonPath\添加注册表项子项的内容( 如果有)。如果在Windows上并且没有applocal = true设置pyvenv.cfg,并且sys.prefix找不到,则添加注册表项的核心内容(HK_CURRENT_USER\Software\Python\PythonCore\\PythonPath\如果存在);如果在Windows上,并且未设置PYTHONPATH,则找不到前缀,并且没有存在注册表项,则添加PYTHONPATH的相对编译时值; 否则,此步骤将被忽略。编译时宏PYTHONPATH中的路径相对于动态查找添加sys.prefix。在Mac和Linux上,sys.exec_prefix添加了值。在Windows上,添加了(或将要使用的)动态搜索的目录sys.prefix。在Windows的这个阶段,如果没有找到前缀,那么python将尝试通过搜索所有目录中sys.path的地标文件来确定它,因为它尝试使用之前的目录sys.executable,直到它找到了什么。如果没有,sys.prefix则留空。最后,在所有这些之后,Python加载site模块,这进一步增加了sys.path:它首先从头部和尾部构建最多四个目录。对于头部,它使用sys.prefix和sys.exec_prefix; 空头被跳过了。对于尾部,它使用空字符串然后lib/site-packages(在Windows上)或lib/pythonX.Y/site-packages 然后lib/site-python(在Unix和Macintosh上)。对于每个不同的头尾组合,它会看到它是否引用现有目录,如果是,则将其添加到sys.path并检查新添加的配置文件路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值