ModulesNotFound在shell脚本中运行python3时出错

2024-09-30 16:29:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的python3路径在/usr/bin下,任何我的pip路径在我的本地存储库的/.local/bin下。 安装了一些pip模块后,我可以通过python3 mycode.py成功运行代码

但我尝试运行shell脚本:

#!/usr/bin
echo "starting now..."
nohup python3 mycode.py > log.txt 2>&1 &
echo $! > pid
echo "mycode.py started at pid: "
cat pid

还有我的python代码:

mycode.py

#!/usr/bin/env python3
from aiocqhttp import CQHttp, Event, Message, MessageSegment
...
...
...

它给了我:

Traceback (most recent call last):
  File "mycode.py", line 2, in <module>
    from aiocqhttp import CQHttp, Event, Message, MessageSegment
ModuleNotFoundError: No module named 'aiocqhttp'

我试图用我的本地路径替换shell脚本的解释器,但没有用。如何使用shell脚本运行python代码


Tags: pip代码frompyimportecho路径脚本
2条回答

快速解决方案:安装与sudo相同的软件,然后所有用户都可以访问该软件

在您的情况下,aiocqhttp安装在您的主目录中,当您通过sudo调用脚本时,python3将无法知道如何在您的主目录中进行搜索(因为运行该进程的是root)。您可以使用以下两种方法解决此问题:

方法1:

sudo -H pip3 install -U aiocqhttp

在系统范围内安装此模块,以便每个用户都能找到它

方法2:

sudo PYTHONPATH=/home/a495488027/.local/lib/python3.8/site-packages python3 mycode.py

将python模块搜索路径临时添加到sudo并运行代码。此时您不想在系统范围内安装软件包


回到你的问题上来

sudo PYTHONPATH=/home/a495488027/.local/lib/python3.8/site-packages bash script.sh

我应该做这项工作

相关问题 更多 >