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

时间:2018-06-01 12:40:43

标签: python django setup-project project-structure

我知道很多地方都提出过这个问题,但他们似乎都没有回答我的问题。

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

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

我希望设置类似于django的设置,我可以使用Project.<package>语法引用任何文件。

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

get_data_from_api.py

import Project.utils.log

# Rest of code goes here...

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

我在某处读到了我应该修改我的PYTHONPATH,但如果可能的话,我想阻止它。另外,django似乎把它拉了下来,因为我在那里找不到任何PYTHONPATH修改代码。

我真的很感激帮助!

发布说明: tests符合此文件结构的位置?我希望它们是分开的,但也可以轻松访问整个项目。

3 个答案:

答案 0 :(得分:0)

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

  

Post Note:测试在哪里适合这个文件结构?我想要   它们是分开的,但也可以真正访问整个项目   容易。

您可以将tests放在Project目录本身,与api和utils并行。

答案 1 :(得分:0)

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

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...

一切正常!

如果我在黑暗中完全拍摄,请让我知道,现在数百小时进入该项目我真的错了!

答案 2 :(得分:0)

如果您查看这三个教程,可能会有所帮助。它可能无法完全解决您的想象,但肯定会为您提供有关操作方法的想法或背景。

他们已经写过有关x > INT_MAX/100的文章,因此您可以在Best practice for Django project working directory structure上查看详细信息。