Use venv for running python scripts
This commit is contained in:
parent
66a9627b29
commit
9ecf231307
@ -7,7 +7,7 @@ import logging, requests, threading, shutil, subprocess
|
|||||||
from pytube import YouTube
|
from pytube import YouTube
|
||||||
from html2text import html2text
|
from html2text import html2text
|
||||||
from gi.repository import Adw, Gtk
|
from gi.repository import Adw, Gtk
|
||||||
from .internal import cache_dir, config_dir
|
from .internal import cache_dir, data_dir
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
# CLEAR CHAT | WORKS
|
# CLEAR CHAT | WORKS
|
||||||
@ -423,11 +423,22 @@ def run_script_response(self, dialog, task, script, language_name):
|
|||||||
if dialog.choose_finish(task) == "accept":
|
if dialog.choose_finish(task) == "accept":
|
||||||
logger.info('Running: \n{}'.format(script))
|
logger.info('Running: \n{}'.format(script))
|
||||||
if language_name == 'python3':
|
if language_name == 'python3':
|
||||||
if os.path.isfile(os.path.join(cache_dir, 'temp_python_script.py')):
|
if not os.path.isdir(os.path.join(data_dir, 'pyenv')):
|
||||||
os.remove(os.path.join(cache_dir, 'temp_python_script.py'))
|
os.mkdir(os.path.join(data_dir, 'pyenv'))
|
||||||
with open(os.path.join(cache_dir, 'temp_python_script.py'), 'w') as f:
|
with open(os.path.join(data_dir, 'pyenv', 'main.py'), 'w') as f:
|
||||||
f.write(script)
|
f.write(script)
|
||||||
script = 'python3 {}'.format(os.path.join(cache_dir, 'temp_python_script.py'))
|
script = [
|
||||||
|
'python3 -m venv "{}"'.format(os.path.join(data_dir, 'pyenv')),
|
||||||
|
'{} {}'.format(os.path.join(data_dir, 'pyenv', 'bin', 'python3').replace(' ', '\\ '), os.path.join(data_dir, 'pyenv', 'main.py').replace(' ', '\\ '))
|
||||||
|
]
|
||||||
|
if os.path.isfile(os.path.join(data_dir, 'pyenv', 'requirements.txt')):
|
||||||
|
script.insert(1, '{} install -r {}'.format(os.path.join(data_dir, 'pyenv', 'bin', 'pip3'), os.path.join(data_dir, 'pyenv', 'requirements.txt')))
|
||||||
|
else:
|
||||||
|
with open(os.path.join(data_dir, 'pyenv', 'requirements.txt'), 'w') as f:
|
||||||
|
f.write('')
|
||||||
|
print(script)
|
||||||
|
script = ';\n'.join(script)
|
||||||
|
|
||||||
script += '; echo "\n🦙 {}"'.format(_('Script exited'))
|
script += '; echo "\n🦙 {}"'.format(_('Script exited'))
|
||||||
if shutil.which('flatpak-spawn'):
|
if shutil.which('flatpak-spawn'):
|
||||||
script = 'echo "🦙 {}\n";'.format(_('The script is contained inside Flatpak')) + script
|
script = 'echo "🦙 {}\n";'.format(_('The script is contained inside Flatpak')) + script
|
||||||
|
Loading…
x
Reference in New Issue
Block a user