【发布时间】:2018-09-24 09:26:19
【问题描述】:
我的文件结构如下:
答:
|_a.py
|_b.py
乙:
|_a.py
|_b.py
我想动态执行 A/b.py 或 B/b.py。
我正在使用以下代码:
from importlib import import_module
path = '/home/username/test/' + module + '/'
if path not in sys.path:
sys.path.append(path)
script = import_module('b', 'Script')
myClass = getattr(script, 'Script')
run = myClass()
这样做,如果我运行 B/b.py,然后运行 A/b.py,它将执行 B/b.py 而不是 A/b.py。
第一个运行的脚本将在下一轮执行。
我需要帮助以确保只运行我想要的目录中的文件。
【问题讨论】:
-
能否提供
import_module( ... )的实现和sub的定义? -
@mangus:已在问题中更新。
-
如何确定是需要 A/b.py 还是 B/b.py ?如果目录 A 和 B 都在
sys.path中,则 b.py 不明确。 -
文件夹和文件名作为参数传递给函数。
-
如果您先将 A 然后 B 附加到
sys.path,然后是import b,您将得到 A/b。 py,因为首先附加了 A。然而,可以将append()包装在if-statement 中:if some_condition : sys.append("A"),但同时附加两者会产生一个模棱两可的b.py。我建议不附加到sys.path,而是使用python模块,如下面的回答所示。
标签: python django python-import