繁体   English   中英

通过全局python导入本地模块

[英]Import Local module over global python

我有2个python文件。 一种是尝试导入第二种。 我的问题是第二个名为math.py。 我不能重命名。 当我尝试调用位于math.py内的函数时,无法执行此操作,因为我最终使用了全局数学模块。 如何导入本地文件而不是全局文件。 我正在使用Python 2.7,这(大致)是我的导入语句:

cstr = "math"
command = __import__(cstr)

稍后我尝试:

command.in_math_py_not_global()

编辑:一个更完整的示例:

def parse(self,string):
    clist = string.split(" ")
    cstr= clist[0]
    args = clist[1:len(clist)]
    rvals = []
    try:
        command = __import__(cstr)
        try:
            rvals.extend(command.main(args))
        except:
            print sys.exc_info()
    except ImportError:
        print "Command not valid"

Python进程具有已加载模块的单个名称空间。 如果您(或任何其他模块 )已经出于任何原因加载了标准math模块,则尝试使用import__import__()再次加载它,只会返回对已加载模块的引用。 您应该能够使用print id(math)并与print id(command)比较来验证这一点。

尽管您已经声明无法更改math.py的名称, math.py我建议您可以更改。 您正在从用户那里获取要加载的模块的名称。 您可以在实际使用__import__()函数添加前缀之前对其进行修改。 例如:

command = __import__("cmd_" + cstr)

然后,将math.py重命名为cmd_math.py ,您将避免这种冲突。

您可以使用相对导入:

from . import math

http://docs.python.org/tutorial/modules.html#intra-package-references

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM