第十七章:运行时特性-sys:系统特定配置-模块和导入-导入路径

本文详细介绍了Python中模块的导入过程及搜索路径管理。解释了sys.path的作用,如何通过PYTHONPATH环境变量或直接修改sys.path来改变导入路径,以及模块重新加载的机制。

17.2.6.3 导入路径
模块的搜索路径作为一个Python列表保存在sys.path中。这个路径的默认内容包括启动应用所使用脚本的目录和当前工作目录。

import sys

for d in sys.path:
    print(d)

搜索路径中的第一个目录是示例脚本本身的主目录。后面是一系列平台特定的路径,指示已编译的扩展模块(用C编写)可能安装在哪些位置。最后列出全局site-packages目录。

在这里插入图片描述
通过将shell变量PYTHONPATH设置为一个用冒号分隔的目录列表,可以在启动解释器之前修改导入搜索路径列表。
在这里插入图片描述
程序还可以直接向sys.path增加元素以修改路径。

import importlib
import os
import sys

base_dir = os.path.dirname(__file__) or '.'
print('Base directory:',base_dir)

# Insert the package_dir_a_directory at the front of the path.
package_dir_a = os.path.join(base_dir,'package_dir_a')
sys.path.insert(0,package_dir_a)

# Import the example module.
import example
print('Imported example from:',example.__file__)
print('  ',example.DATA)

# Make package_dir_b the first directory in the search path.
package_dir_b = os.path.join(base_dir,'package_dir_b')
sys.path.insert(0,package_dir_b)

# Reload the module to get the other version.
imp.reload(example)
print('Reloaded example from:',example.__file__)
print('  ',example.DATA)

重新加载一个已经导入的模块时,会重新导入这个文件,并使用相同的module对象来保存结果。如果在第一次导入和reload()调用之间改变了路径,这意味着第二次可能加载一个不同的模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值