1

我正在传递 args 之类的

python file.py arg1 arg2 arg3

我想知道是否有办法将这些 args 视为对象而不是以下代码的字符串:

one = sys.argv[1]
two = sys.argv[2]
three = sys.argv[3]
from one import two
    a = two.three()

因为一二三将是字符串。如何将它们解析为对象?

更新:

pkg = import_module(two, package=one)

__import__(name)                                                              
ImportError: No module named <whatever_module_name>
4

3 回答 3

2

您可以将importlib 用于 Python 2importlib 用于 Python 3

import importlib
path = importlib.import_module('os.path')
print(path.join('a','b'))
于 2013-07-16T16:58:03.023 回答
1

您可以使用内置__import__imp 模块以编程方式导入对象:

# Import 'name' relative to 'path'
module = imp.load_module(name, *imp.find_module(name, [path]))

每当我想以编程方式导入模块时,我就是这样做的,但imp.find_module返回一个 3 元组:

fil, path, desc = imp.find_module(name, [path])
module = imp.load_module(name, fil, path, desc)
于 2013-07-16T16:05:59.870 回答
1

我想你想要的是__importing__

spam = __import__('spam', globals(), locals(), [], 0)
于 2013-07-16T16:06:14.350 回答