ste*_*a79 6 python boot autostart virtualenv 16.04
我想在启动时从虚拟环境启动 python 脚本。我搜索了整个论坛和其他来源,但未能使其发挥作用。
脚本应在脚本目录作为工作目录运行,并且启动脚本的终端应保持可见。
我主要使用了“启动应用程序”和 ~/user/.config/autostart 中 .desktop 文件的不同配置
我尝试过运行单独工作的 shell 文件,如下所示:
[Desktop Entry]
Type=Application
Terminal=true
Exec=/home/user/autostart.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=True
Name=autostart_shell
Comment=
Run Code Online (Sandbox Code Playgroud)
和 .sh 文件
#!/usr/bin/env bash
sleep 10
cd /home/user/environment
bin/python3 main.py
bash
Run Code Online (Sandbox Code Playgroud)
或者类似的东西
#!/usr/bin/env bash
sleep 10
cd /home/user/environment
source bin/activate
python3 main.py
bash
Run Code Online (Sandbox Code Playgroud)
然而环境永远不会被激活。
我还尝试了其他 .desktop-configurations 如下但没有成功
[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
Run Code Online (Sandbox Code Playgroud)
我花了一天的大部分时间都没有成功,有人有任何想法吗?
更新 好的,经过一些工作后,问题与激活虚拟环境有关。
我正在使用“启动应用程序”来运行 shell 脚本。我已经尝试了 gnome-terminal 和 xterm ,结果相同。以下是 *.desktop 作业中的命令
gnome-terminal --command '/home/user/folder/startup.sh'
Run Code Online (Sandbox Code Playgroud)
和
xterm /home/user/folder/startup.sh
Run Code Online (Sandbox Code Playgroud)
shell 脚本如下所示:
#!/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
Run Code Online (Sandbox Code Playgroud)
启动和登录时,终端会启动,但会显示有关缺少模块的 python 错误。如果 shell 脚本独立运行,它可以正常工作,但从“启动应用程序”启动则不然。
这让我很烦恼,难道真的不能在python虚拟环境中启动终端吗?
您必须将 .sh 文件更改为:
#!/usr/bin/env bash
sleep 10
cd /home/user/environment
/usr/bin/python3 main.py
bash
Run Code Online (Sandbox Code Playgroud)
你在 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13349 次 |
最近记录: |