Я хотел бы запустить сценарий Python с виртуальной среды на запуске. Я искал целый форум и другие источники, но не смог заставить его работать.
Сценарий должен работать в каталоге сценариев как рабочий каталог и также терминал, который запустился, сценарий должен быть сохранен видимым.
Я главным образом использовал "Приложения Запуска" и различные конфигурации .desktop файлов в ~/user/.config/autostart
Я попробовал рабочими файлами оболочки, которые работают самостоятельно ниже:
[Desktop Entry]
Type=Application
Terminal=true
Exec=/home/user/autostart.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=True
Name=autostart_shell
Comment=
И .sh-файл
#!/usr/bin/env bash
sleep 10
cd /home/user/environment
bin/python3 main.py
bash
или что-то вроде этого
#!/usr/bin/env bash
sleep 10
cd /home/user/environment
source bin/activate
python3 main.py
bash
Однако среда никогда не активируется.
Я также попробовал другие .desktop-конфигурации как ниже без успеха
[Desktop Entry]
Type=Application
Path=/home/user/env/
Terminal=true
Exec=gnome-terminal --command 'bash -ec "sleep 10;cd /home/user/env;source bin/activate;python3 main.py;bash"'
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Я провел большую часть дня на это без успеха, у кого-либо есть какие-либо идеи?
ОБНОВИТЕ хорошо, еще после некоторой работы проблема связана с активацией виртуальной среды.
Я использую "Приложения Запуска" для выполнения сценария оболочки. Я попробовал и терминал гнома и xterm с тем же результатом. Ниже команда в *.desktop заданиях
gnome-terminal --command '/home/user/folder/startup.sh'
и
xterm /home/user/folder/startup.sh
Сценарий оболочки смотрит следующим образом:
#!/bin/bash
# Give it some time to make sure everything is loaded
sleep 5
# Logging to make sure it is run
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`
echo "$TIMESTAMP - program was run " >> /home/user/folder/log.txt
# Switching working directory
cd /home/user/folder
# Alternative 1
# Run python script with virtual envirnments python binary
/home/user/folder/bin/python3 /home/user/folder/main.py
# Alternative 2
# Activate environment and then run
source /home/user/folder/bin/activate
python3 /home/user/folder/main.py
# Keep the terminal open
bash
На начальной загрузке и входе в систему запускается терминал, но ошибка Python отображена о недостающем модуле. Если сценарий оболочки выполняется автономный, он работает без проблемы, но запущенный из "Приложений запуска", это не.
Это ворчит меня настолько трудно, разве действительно не возможно запустить терминал в виртуальной среде Python?
необходимо изменить .sh-файл на:
#!/usr/bin/env bash
sleep 10
cd /home/user/environment
/usr/bin/python3 main.py
bash
Вы пропускаете наклонную черту прежде bin/python3, и Python не установлен на / каталоге bin, он установлен в/usr/bin каталоге
$ whereis python3
python3: /usr/bin/python3.8 /usr/bin/python3.8-config /usr/bin/python3 /usr/lib/python3.8 /usr/lib/python3.6 /usr/lib/python3 /etc/python3.8 /etc/python3.6 /etc/python3 /usr/local/lib/python3.8 /usr/local/lib/python3.6 /usr/include/python3.8 /usr/share/python3 /usr/share/man/man1/python3.1.gz