Email or username:

Password:

Forgot your password?
Moana Rijndael 🍍🍕

Как же я ненавижу питоновские импорты, это просто пиздец ебаный

12 comments
Moana Rijndael 🍍🍕

Окей, пока что вставляем грязнейшие (пиздец какие) костыли. Но в ближайшее время надо вычленить общий слой, и вытащить его в отдельный пакет...и вообще всё по пакетам разложить.... (а пакеты в контейнеры, да)

Moana Rijndael 🍍🍕

Как вообще жить без path-зависимостей, это же песец

Впрочем, к питоновскому управлению зависимостями есть куда более серьезные претензии...

sattellite

@mo PATH зависимости? А это разве не для исполняемых файлов? Зависимости, по идее, должны лежать по пути из специальной для языка/среды переменной. Или я не понял о чем речь.

Moana Rijndael 🍍🍕

@sattellite ну просто, в расте можно сделать например как-то так

[dependencies]
local_crate = { path = "../local_folder" }
И он подцепит крейт из этой папки, и слинкует

Питон же резолвит всё
а) через жопу
б) в рантайме

sattellite

@mo а разве нет формальных правил? Наверняка же они есть. Еще помню, чтобы зависимости проекта не лезли в системные пакеты используют virtual environment или что-то такое. Из старого опыта с зависимостями в Perl - есть системные пакеты, есть пакеты установленные в ~/.cpan, есть пакеты установленные по пути из специальной переменной и пакеты из пути переданного через флаг при запуске.

Moana Rijndael 🍍🍕

@sattellite
> чтобы зависимости проекта не лезли в системные

ой это вообще параллельная тема, я не про это. Я про то, как стыковать пакеты в пределах одного проекта

sattellite

@mo окей. Тогда я зря полез в эту тему. В знакомых мне скриптовых языках это не вызывает проблем совсем, просто кладешь их в корне проекта и готово.

всем сёстрам по серьгам

@mo А питоновские относительные импорты — это не оно разве? Которые "from . import package"

docs.python.org/3/reference/im

Moana Rijndael 🍍🍕

@sunaonavi нет. Так можно только в пределах одного "крейта" (выражаясь растовой терминологией. Ты не сможешь так импортнуть что-то из уровня выше __main__

Moana Rijndael 🍍🍕

@sunaonavi т.е, если у меня образно есть такие три пакета

common/
- models.py

telegram_bot/
- main.py

web_api/
- main.py

Использовать common через относительные импорты они не смогут. Только через добавление в sys.path (через переменные окружения, и прочее), но это ещё более нестабильный подход

всем сёстрам по серьгам

@mo А все три образных пакета в одном каталоге? Тогда "from ..common import models" не сработает разве?

Moana Rijndael 🍍🍕

@sunaonavi нет, тут зависит от того, какой файл запускается :ageblobcat:

Выше него — импортами не вылезти

Go Up