为Python添加默认模块搜索路径

本文介绍了如何在Linux和Windows系统中配置Python的搜索路径。在Linux下可通过创建.pth文件添加自定义路径,在Windows下则可以通过修改sys.path列表来实现。文章详细解释了不同环境下Python模块搜索路径的工作原理。

(1) 在linux下面:在dist-packages(即/usr/local/lib/python2.6/dist-packages)添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的文件名称就是了,如我的:

/home/tony/tst-python

保存退出,OK!结果自己验证,重启terminal,再次打开python,

(2)在windows下面

模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己的模块或包的路径,可以动态的加入(sys.path.apend)即可。下面是sys.path在Windows平台下的添加规则。
1、sys.path第一个路径往往是主模块所在的目录。在交互环境下添加一个空项,它对应当前目录。
2、如果PYTHONPATH环境变量存在,sys.path会加载此变量指定的目录。
3、我们尝试找到Python Home,如果设置了PYTHONHOME环境变量,我们认为这就是Python Home,否则,我们使用python.exe所在目录找到lib\os.py去推断Python Home。
如果我们确实找到了Python Home,则相关的子目录(Lib、plat-win、lib-tk等)将以Python Home为基础加入到sys.path,并导入(执行)lib/site.py,将site-specific目录及其下的包加入。
如果我们没有找到Python Home,则把注册表Software\Python\PythonCore\2.5\PythonPath的项加入sys.path(HKLM和 HKCU合并后加入),但相关的子目录不会自动添加的。
4、如果我们没有找到Python Home,并且没有PYTHONPATH环境变量,并且不能在注册表中找到PythonPath,那么缺省相对路径将加入(如:.\Lib;.\plat-win等)。
总结如下
当在安装好的主目录中运行Python.exe时,首先推断Python Home,如果找到了PythonHome,注册表中的PythonPath将被忽略;否则将注册表的PythonPath加入。
如果PYTHONPATH环境变量存在,sys.path肯定会加载此变量指定的目录。
如果Python.exe在另外的一个目录下(不同的目录,比如通过COM嵌入到其他程序),Python Home将不推断,此时注册表的PythonPath将被使用。
如果Python.exe不能发现他的主目录(PythonHome),并且注册表也没有PythonPath,则将加入缺省的相对目录。

Python 中动态添加模块搜索路径有以下几种常见方法: #### 使用 `sys.path.append()` 方法 `sys.path` 是一个 Python 列表,它包含了 Python 解释器用于搜索模块的路径。可以使用 `append()` 方法将新的路径添加到列表末尾。 ```python import sys sys.path.append('/path/to/your/module') ``` #### 使用 `sys.path.insert()` 方法 如果想提高搜索效率,可以把新添加的路径放在 `sys.path` 列表的首位,使用 `insert()` 函数。 ```python import sys sys.path.insert(0, '/path/to/your/module') ``` 这种方法会优先搜索新添加的路径,适合需要优先加载特定模块的情况[^1]。 #### 使用 `site` 模块创建 `.pth` 文件 可以使用 `site` 模块来获取 Python默认搜索路径,并在其中创建一个 `.pth` 文件,将需要添加的路径写入该文件。 ```python import os import site packages_path = site.getsitepackages() pth_file = open(os.path.join(packages_path[0], 'import_path.pth'), 'w') base_path = '/path/to/your/module' pth_file.write(base_path) pth_file.close() ``` 这种方法会让 Python 在启动时自动加载 `.pth` 文件中指定的路径[^2]。 #### 在代码中动态添加相对路径 可以使用 `os` 模块获取当前工作目录或相对路径,并将其添加到 `sys.path` 中。 ```python import os import sys sys.path.append(os.getcwd()) sys.path.append("./..") sys.path.append("./../..") sys.path.append(os.path.abspath("./../../..")) ``` 这种方法适用于需要动态添加项目内相对路径的情况[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值