我的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代码?
答案 0 :(得分:0)
对于您而言,aiocqhttp
已安装在您的主目录中,并且当您通过sudo
调用脚本时,python3
将无法在您的主目录中进行搜索(因为它是运行该进程的根目录)。您可以使用以下两种方法解决该问题:
方法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
应该做的工作。
答案 1 :(得分:0)
快速解决方案:安装与 sudo 相同的安装,然后所有用户都可以访问