Where is Python's sys.path initialized from?
Python的sys.path在哪里初始化?
UPD:Python在引用PYTHONPATH之前添加了一些路径:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | >>> import sys >>> from pprint import pprint as p >>> p(sys.path) ['', 'C:\\Python25\\lib\\site-packages\\setuptools-0.6c9-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\orbited-0.7.8-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\morbid-0.8.6.1-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\demjson-1.4-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\stomper-0.2.2-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\uuid-1.30-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\stompservice-0.1.0-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\cherrypy-3.0.1-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\pyorbited-0.2.2-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\flup-1.0.1-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\wsgilog-0.1-py2.5.egg', 'c:\\testdir', 'C:\\Windows\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\PIL', 'C:\\Python25\\lib\\site-packages\\win32', 'C:\\Python25\\lib\\site-packages\\win32\\lib', 'C:\\Python25\\lib\\site-packages\\Pythonwin'] |
我的PYTHONPATH是:
1 | PYTHONPATH=c:\testdir |
我想知道PYTHONPATH之前的那些路径来自哪里?
Python真的很难智能地设置
集可以变得非常复杂。以下指南是淡化的,
有点不完整,有点错误,但希望有用的指南
对于python时发生的事情的排名和文件python程序员
弄清楚要用什么作为
法线上的
python安装。
首先,python最好地确定它的实际物理层次
文件系统上的位置,基于操作系统所说的内容
它。如果操作系统只是说"python"正在运行,它会发现自己在$ PATH中。
它解决了任何符号链接。一旦它完成了这个,路径
它找到的可执行文件用作
ands,或buts。
接下来,它确定
如果在同一目录中有一个名为
操作系统对此文件执行不同的操作。
python查找的配置文件中的一个值是
配置选项
当它稍后动态设置
Windows上的
然后将
接下来,检查
如果
它存在,取代
如果存在,除非
而是用来代替。
否则,通过向后走来找到这些
来自
如果在该目录中找到文件
或其任何父目录,该目录设置为
Linux或Mac上的
子目录,该目录在Linux上设置为
Mac和Windows,
Windows上的
如果
如果找不到这些"里程碑"文件或
发现,然后python将
值。例如,Linux和Mac使用预编译的默认值作为
值
直到
然后,(你们一直在等待的东西,)python确定初始值
将包含在
在Windows上,这始终是空字符串,它告诉python
使用脚本所在的完整路径。
在Windows上,
Windows上的
如果有的话,添加
然后添加注册表项
如果有的话,添加
然后添加注册表项
添加PYTHONPATH的相对编译时间值;否则,此步骤将被忽略。
使用(或将被使用)动态搜索
添加。
在Windows的这个阶段,如果没有找到前缀,那么python将尝试
通过在
因为它以前尝试使用
如果没有,则
最后,在所有这些之后,Python加载
It starts by constructing up to four directories from a head and a
tail part. For the head part, it usessys.prefix andsys.exec_prefix ;
empty heads are skipped. For the tail part, it uses the empty string
and thenlib/site-packages (on Windows) orlib/pythonX.Y/site-packages
and thenlib/site-python (on Unix and Macintosh). For each of the
distinct head-tail combinations, it sees if it refers to an existing
directory, and if so, adds it to sys.path and also inspects the newly
added path for configuration files.Ok.
好。
"从环境变量PYTHONPATH初始化,加上依赖于安装的默认值"
- http://docs.python.org/library/sys.html#sys.path