1.Python 模块搜索路径简介
当你导入一个模块时,采用的语法:
import module
导入模块时,Python 会在多个位置进行检查。 解释器首先寻找一个内置模块。 然后(如果未找到内置模块),Python 查找sys.path中定义的目录列表。 搜索按此顺序进行。
- 当前目录。
- PYTHONPATH(具有目录列表的环境变量)。
- 与安装有关的默认目录。
例1.1 打印出系统路径
import sys for path in sys.path: print(path)
C:\0python\venv\Scripts\python.exe C:/0python/venv/main.py
C:\0python\venv
C:\0python
C:\Users\steve\AppData\Local\Programs\Python\Python310\python310.zip
C:\Users\steve\AppData\Local\Programs\Python\Python310\DLLs
C:\Users\steve\AppData\Local\Programs\Python\Python310\lib
C:\Users\steve\AppData\Local\Programs\Python\Python310
C:\0python\venv
C:\0python\venv\lib\site-packages
我们可以添加和修改此列表以添加我们自己的路径。
为确保 Python 总能找到 module.py,您需要:
- 将 module.py 放在程序将执行的文件夹中。
- 在 PYTHONPATH 环境变量中包含包含 module.py 的文件夹。或者,您可以将 module.py 放在 PYTHONPATH 变量中包含的文件夹之一中。
- 将 module.py 放在与安装相关的文件夹之一中。
2.重新加载模块 (imp即将淘汰)
Python 解释器在会话期间仅导入一次模块。 这使事情更有效率。
例2.1 模块重新加载
假设我们在名为my_module的模块中具有以下代码。
my_module.py
# This module shows the effect of
# multiple imports and reload
print("This code got executed")
现在我们看到了多次导入的效果。
main.py
import my_module
import my_module
import my_module
我们可以看到我们的代码只执行了一次。 这说明我们的模块仅导入了一次。
现在,如果我们的模块在程序执行过程中发生了变化,我们将不得不重新加载它。一种方法是重启解释器。 但这并没有太大帮助。
Python 提供了一种更有效的方法。 我们可以使用imp模块内部的reload()函数来重新加载模块。 我们可以通过以下方式做到这一点:
main.py
import imp
import my_module
import my_module
imp.reload(my_module)
结果
DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
import imp
This code got executed
This code got executed
wer
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!