LINUX.ORG.RU

Как организовать python проект?

 


0

1

Проект содержит в себе много модулей, часть из которых запускается, а часть является подключаемыми модулями, используемыми чем-либо из запускаемых. Те. хочется иметь возможность делать import module_name, при том, что этот модуль находится не в системной директории, куда ставятся пакеты, и даже не в юзерской директории.

Как это лучше делать?

Это удобно делается на C# - создаешь solution и все модули добавляешь в него. И можешь в одном модуле использовать другом

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 1)

Симлинки в venv. Или это в pip? Одна херня, системные можно подцеплять в окружение.

anonymous
()

Эти модули рассчитаны на использование только исключительно одним проектом или допускается возможность использовать их в других проектах?

ados ★★★★★
()
Ответ на: комментарий от anonymous

В проекте есть подключаемый модуль A, а также запускаемые приложения B, C, и D, и во всех трех надо сделать import A. Каждый из проектов находится в своей директории

.
|- __init__.py
|
|-A-__init__.py
| |
| L- A.py
|
|-B - __init__.py
| |
| L- B.py
....
cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

PYTHONPATH? Во всяком случае его используют так.

anonymous
()
README.md
myscript.py              # import mymodule
mymodule/__init__.py
slovazap ★★★★★
()
Ответ на: комментарий от cvs-255

| L-

Для рисования таких схем есть утилита tree.

во всех трех надо сделать import A. Каждый из проектов находится в своей директории

Вынести «запускаторы» приложений в корневую директорию проекта. Всё, что им нужно уметь делать — импортировать главный файл приложения и запускать из него main().

i-rinat ★★★★★
()

Дежавю или, по-моему, ты уже спрашивал похожее полгода назад?

vvn_black ★★★★★
()
Ответ на: комментарий от i-rinat

У меня количество запускаемых приложений порядка 40. И будет расти. Структурированность необходима

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 3)

Как же просто в C#, все-таки. Сколько ни ругают MS, а интегрированные решения, которыми удобно пользоваться, они делают хорошо

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)

Запускаемые модули вообще не создаешь, а указываешь console entry points в `setup.py`. И вообще, пишешь `setup.py` для всего проекта, на время разработки ставишь его через `pip install -e .`

Все махинации производить в venv.

si0 ★★★
()
Ответ на: комментарий от cvs-255

Не очень понял, что тебе надо, но в Питоне модули структурируются как соответствующие каталоги. Т. е. если есть каталоги myProject/A, myProject/B и т.д., то при правильной настройке PYTHONPATH доступ к модулям будет myProject.A и т.п.

Sahas ★★★★☆
()
Последнее исправление: Sahas (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Ты выдумываешь проблему, которой нет. Почему ты считаешь, что выставить переменную окружения — не удобно?

WitcherGeralt ★★
()

Общепринятый способ — сделать обычный питоний пакет, создать virtualenv, сделать pip install -e ..

Хотя мы уже поняли, что ты хочешь не решить проблему, а странного.

anonymous
()

По директориям и поддиректориям делай, братан, ваще не пожалеешь. Способ что надо. Сам пользуюсь, поцанам в гараже рассказал — они теперь тоже. Бед не знаем.

anonymous
()

Главное делай всё организованно ваще, ара.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.