python模块驻留在名称中包含短划线字符的存储库中

use*_*451 2 python package

我知道模块的名称不应该有破折号.

这是我的存储库结构

my-repo-name/
     src/ 
     tests/
        __init__.py
        tests.py
     fab/
        __init__.py
        fabfile.py

     README.rst
     __init__.py
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我需要导入fabfile.py来运行测试.但由于名称有破折号,我不能做from my-module-name.fab.fabfile import X,Y,Z或相对导入,因为它是非包装.

任何建议如何在不乱砍__import__(...)或添加到sys路径的情况下执行此操作?我应该添加另一个目录吗?

phi*_*hag 6

用途importlib.import module:

import importlib
fabfile = importlib.import_module('my-repo-name.fab.fabfile', None)
X = fabfile.X
Run Code Online (Sandbox Code Playgroud)

但您应该只是更改存储库的名称.为了过渡,您可以创建一个临时的符号链接

$ mv my-repo-name my_repo_name
$ ln -s my_repo_name my-repo-name
Run Code Online (Sandbox Code Playgroud)