避免Python中的相对导入和sys.path

避免Python中的相对导入和sys.path,python,import,Python,Import,目前,我正在处理一个Python项目,其目录结构如下: tests/ corpus/ __init__.py tests.py monkey/ corpus/ corpus.py setup.py 我希望tests.py(在tests/corpus中)导入corpus.py(在monkey/corpus中) 我见过许多涉及使用相对导入和sys.path的解决方案,但我也见过人们直接使用导入(例如) 我如何设置我的代码以便能够像这样

目前,我正在处理一个Python项目,其目录结构如下:

tests/
    corpus/
        __init__.py
        tests.py
monkey/
    corpus/
        corpus.py
setup.py
我希望tests.py(在tests/corpus中)导入corpus.py(在monkey/corpus中)

我见过许多涉及使用相对导入和sys.path的解决方案,但我也见过人们直接使用导入(例如)

我如何设置我的代码以便能够像这样导入根文件夹中的任何内容?我已经看到了一些想法,通过配置setup.py可能实现这一点。这是真的吗

非常感谢。我很抱歉用另一个相关问题冲淡了这个精彩的网站

真诚地,
linuxuser

在做了一些研究之后,我发现我需要在内部语料库目录中添加一个空的uu init_uuu.py,并在my.bashrc中添加一行,将其附加到PYTHONPATH

这就是my.bashrc现在的样子:

...
export PYTHONPATH=$PYTHONPATH:/home/username/monkey/corpus
...
起初,必须附加my.bashrc来访问库似乎很少见,但据我所知,这是编辑环境的典型方式,因此是提供对Python库的访问的正确方式


关于PYTHONPATH的一个很好的信息来源是这篇博文:

我想我已经为自己找到了一个解决方案,经过一点研究-还不太确定。。。嗯,这很奇怪-我在根目录中添加了一个名为main.py的文件。我可以轻松导入setup.py(
import setup
),但当我尝试导入tests.corpus.tests时,它会抱怨没有该名称的模块。我试过蟒蛇3和蟒蛇2。有什么想法吗?通过在语料库中添加init.py修复了它。如果您找到了解决方案;你可以
...
export PYTHONPATH=$PYTHONPATH:/home/username/monkey/corpus
...