【发布时间】:2020-03-22 18:17:20
【问题描述】:
我正在尝试在 Linux (Ubuntu) 上创建 shell 脚本,如 Automate the boring stuff with Python 中所述
我已经创建了所有文件和 Python 脚本,当我尝试在 Ubuntu 中从 Dash 运行它时,它会运行 Python 脚本,而 Python 版本不在我的 pyenv 全局版本中。因此,我无法使用通过 pip 安装的任何其他模块。
我的 Python 版本(与 pyenv 版本一起列出)
system
* 3.8.1 (set by /home/tomek/.python-version)
3.8.1/envs/blog_env
3.8.1/envs/ll_env
3.8.1/envs/mcam_env
3.8.1/envs/money_value
3.8.1/envs/pizzaenv
3.8.1/envs/project_2
blog_env
ll_env
mcam_env
money_value
pizzaenv
project_2
版本 3.8.1 使用 pyenv 设置为全局。一些细节:
which python && which pip && python -V
/home/tomek/.pyenv/shims/python
/home/tomek/.pyenv/shims/pip
Python 3.8.1
我的 .sh(放在我的主目录中)文件看起来像这样
#!/usr/bin/env bash
python3 /home/tomek/automate/MCAM/mClip.py 'agree'
bash
我的 .desktop 文件(放在 .local/share/applications 需要在 Ubuntu 中通过 Dash 运行脚本)看起来像这样
[Desktop Entry]
Name=mClip
Exec=gnome-terminal -- /home/tomek/mClip.sh
Type=Application
Categories=GTK;GNOME;Utility;
我在 Python 脚本中的第一行如下所示:
#!/usr/bin/env python
所以,当我从 shell 运行我的脚本时,它工作正常,但是当我通过 Dash 运行它时,由于缺少模块,它会出错,所以它试图在不同的 Python 环境中运行它。 我尝试以与尝试运行它相同的方式调试此脚本,因此我以这种方式更改了 .sh 文件
#!/usr/bin/env bash
which python && which pip && python -V && python3 -V
bash
我得到了这个结果
/usr/bin/python
/usr/bin/pip
Python 2.7.17
Python 3.6.9
当我在同一个 shell 窗口中运行这段代码时(!)它给了我
/home/tomek/.pyenv/shims/python
/home/tomek/.pyenv/shims/pip
Python 3.8.1
Python 3.8.1
我也尝试在这个 .sh 脚本中运行 pyenv 以查看结果,但它给了我找不到 pyenv 命令的错误。 我试图到处寻找一些答案,但没有一个对我有用。
【问题讨论】:
标签: python python-3.x linux bash shell