Форум сайта python.su
Всем привет! Подскажите, можно ли из скрипта вызывать виртуальное окружение? Что-то вроде такого:
run_virtual_env = subprocess.check_call([join('.', 'virtualenv', 'Scripts', 'activate')])
create_virtual_env = subprocess.check_call(['python', '-m', 'venv', join('.', 'virtualenv')]) run_pip = subprocess.check_call(['pip', 'install', '-r', 'requirements.txt'])
Отредактировано Gosha777 (Янв. 11, 2018 12:12:49)
Офлайн
Зачем? Если вы хотите запустить питонью программу из виртуального окружения не обязательно его активировать, нужно только знать путь до your_virualenv/bin/python и этим интерпретатором и исполняйте вашу программу.
Офлайн
FishHookЧтобы пользователь этим не заморачивался
Зачем? Если вы хотите запустить питонью программу из виртуального окружения не обязательно его активировать, нужно только знать путь до your_virualenv/bin/python и этим интерпретатором и исполняйте вашу программу.
Офлайн
Gosha777
То есть? Вы понимаете, что виртуаненв - это просто выделенный в отдельный каталог интерпретатор питона и набор библиотек? Как вы планируете сначала запустить программу, а потом активировать виртуаленв? Есть же строгая последовательность причин и следствий. Нельзя съесть самого себя или родить самого себя или запусть программу изнутри самой этой же программы. Я вам выше написал, просто сделайте пользователю ярлык
> my_programm/virtualenv/bin/python my_programm/code/main.py
Офлайн
FishHookНемного не понял, что должно быть на выходе. Что за ярлыки?
Gosha777То есть? Вы понимаете, что виртуаненв - это просто выделенный в отдельный каталог интерпретатор питона и набор библиотек? Как вы планируете сначала запустить программу, а потом активировать виртуаленв? Есть же строгая последовательность причин и следствий. Нельзя съесть самого себя или родить самого себя или запусть программу изнутри самой этой же программы. Я вам выше написал, просто сделайте пользователю ярлык
Офлайн
Gosha777Это, блин - питон.
У меня есть my_programm → virtualenv → Scripts → python.exe
Офлайн
Gosha777Ну что тут поделаешь.
Немного не понял, что должно быть на выходе. Что за ярлыки?
Gosha777Давайте так, опишите последовательность действий пользователя сейчас при:
Чтобы пользователь этим не заморачивался
>>> join('.', 'virtualenv', 'Scripts', 'activate') Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> NameError: name 'join' is not defined
Офлайн
Gosha777Ну что тут поделаешь.
Немного не понял, что должно быть на выходе. Что за ярлыки?
Gosha777Давайте так, опишите последовательность действий пользователя сейчас при:
Чтобы пользователь этим не заморачивался
>>> join('.', 'virtualenv', 'Scripts', 'activate') Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> NameError: name 'join' is not defined
Офлайн
doza_and
1. Как пользователь устанавливает программу сейчас:
-Пользователь устанавливает Python и обязательно ставит галочку, чтобы добавить его в переменную Path.
-Затем запускает в программе скрипт install.py:
import subprocess from os.path import join run_pip = subprocess.check_call(['pip', 'install', '-r', 'requirements.txt']) input('Модули установлены. Нажмите Enter, чтобы завершить программу: ')
subprocess.check_call(['python', '-m', 'venv', join('.', 'virtualenv')])
subprocess.check_call(['pip', 'install', '-r', 'requirements.txt'])
Офлайн
Gosha777Судя по галочке это windows. можно написать bat файл который при помощи msiinstall все поставит без вопросов по умолчанию. (это на любителя)
Пользователь устанавливает Python и обязательно ставит галочку
Gosha777По поводу виртуального окружения ничего не скажу, мы им вообще не пользуемся. Никакого “если вдруг” за последние 10 лет активного использования питона не случалось.
я бы хотел изолировать свою программу от других,
Отредактировано doza_and (Янв. 12, 2018 22:49:30)
Офлайн