Comments 9
Вопрос в тему: есть в Питоне возможность, чтобы стандартные зависимости устанавливались сами из запущенного скрипта при первом запуске?
Чтобы вместо
import foo # First run "pip3 install foo"
было
install__if_missing_and_import foo(version="1.2.3")?
Что-то похожее на https://github.com/pomponchik/instld ? Также можно например перед импортом пакета через os.system или subprocess установить пакет с помощью pip: from os import system; system("pip install foo==1.2.3");
pip это обычный питоновский модуль. Поэтому можно как то так:
import pip
pip.main(('install', 'packname==version'))
Для Win есть портабельный (переносимый/портативный -- кому что приятней) проект WinPython. Он упоминается на официальном сайте Python'а. На первый взгляд, он тянет пакеты к себе в папку.
Когда же встретился с label-studio - я устал
https://labelstud.io/guide/install.html
Просто работать в докере
https://github.com/HumanSignal/label-studio
https://hub.docker.com/r/heartexlabs/label-studio
Вроде еще можно поставить на Win7.
https://docker-docs.uclv.cu/toolbox/toolbox_install_windows/
https://github.com/docker-archive/toolbox/releases/tag/v19.03.1
Ещё можно собирать все пакеты, библиотеки и сам интерпретатор python в один пакет, и даже в один бинарный исполняемый файл, который уже копировать на машину без интернета.
Для этого есть несколько инструментов, например pyinstaller
https://pyinstaller.org/en/stable/
или cx_freeze https://cx-freeze.readthedocs.io/en/stable/
Нееее... в моем понимании, "фрактал звиздеца" несколько более многогранен.
А кто сказал, что приложение вот с этим набором зависимостей запустится на вот этой версии интерпретатора\ос?
А какие из зависимостей можно задаунгрейдить не поломав все к чертям?
А можно ли использовать более старую версию самого приложения\библиотеки?
А что делать с зависимостями, которые требуют вот сборки кода? Ну, какой-нибудь драйвер для постгре?
А есть ли версия вот этого вот драйвера под эту вот ХП?
А будет старая версия работать с вот этой вот версией постгри (Привет, tls 1.3)?
Тут даже наличие интернета не всегда спасает, если что...
Контейнеризация приложений с рантаймом помогает... не всегда. В том плане что немае под XP доскеров да и под, например, mac m1 собирать надо отдельно. Пару раз неожиданно выручал даже не pyinstaller, а вовсе nuitka - но то прям ОЧЕНЬ такоЭ.
PIP — Загрузка пакетов python для офлайн установки