我可以覆盖python中的模块搜索路径吗

2024-04-16 12:01:23 发布

您现在位置:Python中文网/ 问答频道 /正文

为了理解python模块的搜索路径,我试图用标准库中已经提供的名称创建一个模块。我已经创建了一个文件'数学.py,它有一个函数定义'factorial',它接受一个参数。现在我希望在导入数学模块并调用'factorial'函数时,调用我的函数,而不是标准库函数。所有文件都说搜索路径在'搜索路径'定义搜索顺序,并将当前目录赋予最高优先级。在

但是当我运行我的代码时,我发现我的数学模块没有被加载,我的阶乘函数也没有被调用。Python继续加载和执行标准库定义。在

我哪里出错了

这是档案我的main.py在

print "running...............>>"
import math
print math.factorial(5)

这是档案数学.py(在同一目录中我的main.py)在

^{pr2}$

现在我执行命令'python我的main.py'


Tags: 模块文件函数py路径名称标准定义
1条回答
网友
1楼 · 发布于 2024-04-16 12:01:23

我使用这种技术来屏蔽/重写库中.pyc文件中的功能。我使用了以下语句:

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

它允许模块解析机制在父文件夹中找到模块,然后在库中找到该模块。我没有覆盖的模块随后会在库位置找到。在

此语句必须在import os之后,但必须在所有库模块导入语句之前。在

相关问题 更多 >