为了理解python模块搜索路径,我试图通过标准库中已有的名称创建模块。我创建了一个文件' math.py'在我当前的文件夹中,它有一个功能定义' factorial'这需要一个参数。现在,当我导入数学模块并调用“阶乘”时,我希望这样。函数,然后调用我的函数而不是标准库。所有文件都说,搜索路径保存在' sys.path'定义搜索顺序,它为当前目录提供最高优先级。
但是当我运行我的代码时,我发现我的数学模块没有加载,我的阶乘函数没有被调用。 Python继续加载并执行标准库定义。
我哪里出错
这是mymain.py文件
print "running...............>>"
import math
print math.factorial(5)
这是文件math.py(与mymain.py位于同一目录中)
print "math loaded"
def factorial(i) :
return i+10
现在我执行命令' python mymain.py'
答案 0 :(得分:0)
我使用此技术从库中屏蔽/覆盖.pyc文件中的功能。我使用了以下声明;
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
允许模块解析机制在库中的模块之前找到父文件夹中的模块。随后可以在库位置找到我未覆盖的模块。
此语句必须在import os
之后但在所有库模块导入语句之前。