我知道模块的名称不应该破折号。
这是我的存储库结构
my-repo-name/
src/
tests/
__init__.py
tests.py
fab/
__init__.py
fabfile.py
README.rst
__init__.py
在我的测试中,我需要导入fabfile.py来运行测试。但由于名称有短划线,我无法进行from my-module-name.fab.fabfile import X,Y,Z
或相对导入,因为它是非包装。
任何建议如何在不使用__import__(...)
进行黑客攻击或将其添加到sys路径的情况下执行此操作?我应该添加另一个目录吗?
答案 0 :(得分:6)
import importlib
fabfile = importlib.import_module('my-repo-name.fab.fabfile', None)
X = fabfile.X
但是你应该真正改变存储库的名称。要进行转换,您可以使用
创建临时symlink$ mv my-repo-name my_repo_name
$ ln -s my_repo_name my-repo-name