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()调用之间改变了路径,这意味着第二次可能加载一个不同的模块。