jbi*_*lls 5 python import python-2.7
我有2个python文件。一种是尝试导入第二种。我的问题是第二个名为math.py。我不能重命名。当我尝试调用位于math.py内的函数时,无法执行此操作,因为我最终使用了全局数学模块。如何导入本地文件而不是全局文件。我正在使用Python 2.7,这(大致)是我的导入语句:
cstr = "math"
command = __import__(cstr)
Run Code Online (Sandbox Code Playgroud)
稍后我尝试:
command.in_math_py_not_global()
Run Code Online (Sandbox Code Playgroud)
编辑:一个更完整的示例:
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"
Run Code Online (Sandbox Code Playgroud)
Python 进程具有加载模块的单个命名空间。如果您(或任何其他模块)出于任何原因已经加载了标准math
模块,那么尝试使用import
或再次加载__import__()
它只会返回对已加载模块的引用。您应该能够使用print id(math)
并与 进行比较来验证这一点print id(command)
。
尽管您已声明无法更改 的名称math.py
,但我建议您可以。您将从用户处获取要加载的模块的名称。__import__()
您可以在实际使用该函数添加前缀之前修改它。例如:
command = __import__("cmd_" + cstr)
Run Code Online (Sandbox Code Playgroud)
然后,重命名math.py
为cmd_math.py
,您将避免这种冲突。
归档时间: |
|
查看次数: |
3671 次 |
最近记录: |