Лучший способ организовать проект Python, чтобы легко получить доступ ко всем модулям - PullRequest
0 голосов
/ 01 июня 2018

Я знаю, что этот вопрос задавался во многих местах, но ни один из них, похоже, не отвечает на мой вопрос.

Я создаю отдельное приложение на 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 вписывается в эту файловую структуру?Я бы хотел, чтобы они были отделены друг от друга, но при этом имели бы доступ ко всему проекту очень легко.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Я использовал файловую структуру, подобную следующей:

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

И все работает!

Если я полностью снимаю втьма, пожалуйста, дайте мне знать, я бы предпочел ошибаться сейчас, чем через сотни часов в проекте!

0 голосов
/ 01 июня 2018

Вам необходимо добавить __init__.py во все каталоги, которые вы хотите рассматривать как пакет Python, а не только в корневой каталог.

Сообщение Примечание. Где тесты вписываются в эту файловую структуру?Я хотел бы, чтобы они были отдельными, но также имели бы доступ ко всему проекту очень просто.

Вы можете поместить свой tests в сам каталог Project, параллельно api и utils.

...