组织 python 项目以轻松访问所有模块的最佳方式

Best way to organize a python project to easily access all of the modules

我知道很多地方都问过这个问题,但是 none 似乎真的回答了我的问题。

我正在 python 创建一个独立的应用程序,我当前的项目结构是这样的:

Project/
    utils/
        log.py
    api/
        get_data_from_api.py
    main.py

我想要一个类似于 django 的设置,我可以在其中使用 Project.<package> 语法引用任何文件。

例如,如果我想从我的 get_data_from_api 模块访问我的 log 模块,我可以这样做:

get_data_from_api.py

import Project.utils.log

# Rest of code goes here...

但是,我似乎无法让它工作,即使我在根目录中添加了一个 __init__.py 文件。

我在某处读到我应该修改我的 PYTHONPATH,但我想尽可能避免这种情况。此外,django 似乎成功了,因为我在那里找不到任何 PYTHONPATH 修改代码。

非常感谢您的帮助!

Post 注意: tests 适合这个文件结构的什么地方?我希望它们是分开的,但也很容易访问整个项目。

您需要将 __init__.py 添加到每个要作为 Python 包处理的目录,而不仅仅是根目录。

Post Note: Where would tests fit in this file structure? I would like them to be separate, but also have access to the entire project really easily.

您可以将 tests 放在项目目录本身中,与 api 和实用程序平行。

我最终使用了如下文件结构:

src/
    main.py
    project/
        api/
            get_data_from_api.py
        util/
            log.py
    test/

这样,因为我是 运行 main.py 文件,所以我可以从程序的任何地方执行 import project.<package>.<module>。例如,我可以这样做:

get_data_from_api.py

import project.util.log

# Rest of code goes here...

一切正常!

如果我完全是在黑暗中拍摄,请告诉我,我宁愿现在就错了,也不愿投入数百小时的项目!

如果您查看这三个教程,可能会对您有所帮助。它可能无法完全解决您想象的问题,但它肯定会给您一个想法或背景知识。

他们已经写了关于 Django 的内容,因此您可以在以下位置查看详细信息:Best practice for Django project working directory structure