Как разрешить myprogram.py использовать venv без предварительной установки каких-либо envs?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как разрешить myprogram.py использовать venv без предварительной установки каких-либо envs?

Сообщение Anonymous »

Я новичок в Python(3), но не в программировании в целом.
Я хотел бы распространить git-репозиторий с моей программой, состоящий из этих файлов: р>

Код: Выделить всё

requirements.txt
myprogram.py
lib/modulea.py
lib/moduleb.py
Мой вопрос: каков наилучший и наименее неожиданный способ позволить пользователям запускать myprogram.py, используя зависимости в require.txt? Так что после git clone и некоторых идиоматических команд установки ./myprogram.py или /some/path/to/myprogram.py "просто работает" без необходимости сначала установите магические переменные среды venv или python3?
Я хочу иметь возможность запускать его с помощью #! shebang, чтобы /path/ to/myprogram.py и дважды щелкнув по нему из графического интерфейса файлового менеджера делает правильные вещи.
Я уже знаю, что могу создать обертку.sh или сделать умную строку shebang. Но я ищу лучший подход, поскольку я новичок в Python.
Подробнее
Я предполагаю, что пользователи будет

Код: Выделить всё

git clone $url workdir
cd workdir
python3 -m venv .
./bin/pip install -r requirements.txt
И с этого момента используются модули из require.txt:

Код: Выделить всё

./myprogram.py
Если бы я знал, что каталог проекта всегда /home/peter/workdir, я мог бы запустить myprogram.py с помощью:

Код: Выделить всё

#!/home/peter/workdir/bin/python3
но я бы хотел избежать жесткого кодирования каталога проекта в myprogram.py.
Это также работает в моя крошечная демонстрация, но очевидно, что она хрупкая и не лучшая практика, но она иллюстрирует то, что я пытаюсь сделать:

Код: Выделить всё

#!/usr/bin/env python3
import os
import sys
print(os.path.join(os.path.dirname(__file__), 'lib', 'python3.10', 'site-packages'))
Я уверен, что мог бы придумать какую-нибудь собственную строку Shebang, которая работает, но каков идиоматический способ сделать это в Python3?
Еще раз: после установки pip я категорически отказываюсь устанавливать любые переменные среды или вызывать какой-либо код установки в будущих оболочках перед запуском myprogram.py. (Если только это сильно не противоречит слову «идиоматика», что, я надеюсь, не так)...

Подробнее здесь: https://stackoverflow.com/questions/743 ... beforehand
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»