Python系列教程239——动态修改模块搜索路径

88 阅读2分钟

朋友们,如需转载请标明出处:blog.csdn.net/jiangjunsho…

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写(有时候有空也会参与编写),所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

大部分同学可能都知道,Python模块的搜索路径是一个目录列表,可以通过操作系统的环境变量PYTHONPATH以及.pth路径文件进行定制。其实我们还可以在代码中动态地修改搜索路径。这一招本质上是通过修改名为sys.path的内置列表,也就是内置模块sys的path属性。sys.path在程序启动时就会被初始化,但在那之后,我们可以随意对其元素进行删除、附加和重设。

>>>import sys

>>>sys.path

['','C:\\users','C:\\Windows\\system32\\python30.zip',...more deleted...]




>>>sys.path.append('C:\\sourcedir'# Extend module search path

>>>import string                          # All imports search the new dir last

这个列表是可以任意修改的,你甚至可以完全给它重新赋值。

>>>sys.path = [r'd:\temp']                  # Change module search path

>>>sys.path.append('c:\\lp4e\\examples'# For this process only

>>>sys.path

['d:\\temp','c:\\lp4e\\examples']




>>>import string

Traceback (most recent call last):

  File "<stdin>",line 1,in <module>

ImportError: No module named string

注意,如果从路径中删除重要目录,就无法获取一些关键的工具库了。例如,上一个例子中,我们从路径中删除了Python的源代码库目录的话,我们就再也无法使用string模块了。

此外,记住sys.path的设置方法只在修改的Python会话或进程中才会存续。在程序退出后,不会保留下来。而PYTHONPATH和.pth文件路径配置是保存在操作系统中,不是执行中的Python程序,因此这两种配置方法更全局一些:机器上的每个程序都会去查找PATHONPATH和.pth,而且在程序结束后,它们还存在着。