1.Python 模块搜索路径简介
当你导入一个模块时,采用的语法:
1 |
import module |
导入模块时,Python 会在多个位置进行检查。 解释器首先寻找一个内置模块。 然后(如果未找到内置模块),Python 查找sys.path中定义的目录列表。 搜索按此顺序进行。
- 当前目录。
- PYTHONPATH(具有目录列表的环境变量)。
- 与安装有关的默认目录。
例1.1 打印出系统路径
1 2 3 |
<span>import </span>sys <span>for </span>path <span>in </span>sys.path: <span>print</span>(path) |
1 2 3 4 5 6 7 8 9 |
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
1 2 3 4 |
# This module shows the effect of # multiple imports and reload print("This code got executed") |
现在我们看到了多次导入的效果。
main.py
1 2 3 |
import my_module import my_module import my_module |
我们可以看到我们的代码只执行了一次。 这说明我们的模块仅导入了一次。
现在,如果我们的模块在程序执行过程中发生了变化,我们将不得不重新加载它。一种方法是重启解释器。 但这并没有太大帮助。
Python 提供了一种更有效的方法。 我们可以使用imp模块内部的reload()函数来重新加载模块。 我们可以通过以下方式做到这一点:
main.py
1 2 3 4 |
import imp import my_module import my_module imp.reload(my_module) |
结果
1 2 3 4 |
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
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!