Python 3.x Pip3为所有用户安装模块
我不确定我是应该在这里问这个问题,还是在Linux堆栈溢出上问这个问题,但问题来了 我对python比较陌生,我一直在努力让这个python脚本在aws机器上自动启动。我需要安装两个模块“discord.py”和“watson cloud developer”。Pip3安装上述模块时没有错误。当尝试运行运行运行python脚本的脚本的服务(Total love systemd)时,我收到一个错误,告诉我没有安装discord模块,请参见下文 我非常乐意提供更多的信息 编辑: 服务:Python 3.x Pip3为所有用户安装模块,python-3.x,pip,systemd,systemctl,Python 3.x,Pip,Systemd,Systemctl,我不确定我是应该在这里问这个问题,还是在Linux堆栈溢出上问这个问题,但问题来了 我对python比较陌生,我一直在努力让这个python脚本在aws机器上自动启动。我需要安装两个模块“discord.py”和“watson cloud developer”。Pip3安装上述模块时没有错误。当尝试运行运行运行python脚本的脚本的服务(Total love systemd)时,我收到一个错误,告诉我没有安装discord模块,请参见下文 我非常乐意提供更多的信息 编辑: 服务: [Serv
[Service]
ExecStart=/usr/local/sbin/startbot.sh
bash脚本:
#!/bin/bash
python3 /home/ubuntu/discordBot/main.py
python脚本:
import json
from watson_developer_cloud import VisualRecognitionV3
visual_recognition = VisualRecognitionV3(
"2018-03-19",
iam_apikey="{api-key}")
def ReturnWatsonResults(urlInput):
classes_result = visual_recognition.classify(url=urlInput).get_result()
imageResults = dict()
for images in classes_result['images'][0]['classifiers'][0]['classes']:
imageResults[images['class']]=str(images['score'] * 100)
return imageResults
我知道python脚本写得不是很好,但它们确实可以工作,目前令人眼花缭乱的问题完全在于pip在哪里安装模块,出于这样或那样的原因,在由systemd运行时无法访问它们。我怀疑您的启动脚本启动的Python与您安装的discord不同 试着添加行
import sys; print(sys.executable, sys.prefix)
到您的main.py
,在导入discord
之前。还可以尝试在python3
shell中运行它。这应该分别打印在Python可执行文件和标准库的安装位置。如果它们在main.py
中与shell中不同,那就是您的问题
也尝试
$ which python3
$ which pip3
一旦知道实际运行的Python可执行文件的路径,就可以使用该Python的pip
$ foo -m pip install discord
其中foo
是您在main.py
中使用sys.executable
打印的Python可执行文件的完整路径
您还可以尝试将
discord
安装到虚拟环境中
$ python3 -m venv foo
$ source foo/bin/activate
$ pip install discord # install all your other requirements too
其中foo
是可以安装虚拟环境的路径。然后在启动脚本中,在运行main.py
之前激活源代码。这确保python将在您刚刚创建的foo
环境中运行
#!/bin/bash
source foo/bin/activate
python /home/ubuntu/discordBot/main.py
请注意,在活动的虚拟环境中,您使用
python
和pip
,即使您使用python3
创建了环境,请复制/粘贴屏幕截图中的文本,以使此问题能够正确搜索。记住使用“代码格式”按钮。这些启动脚本需要多长时间?如果它们很短,您可以在这里复制它们吗?只是bash脚本,还是您也需要python脚本,它们在没有被systemctlI调用时都可以正常运行。如果需要,我还可以包括服务。如果没有看到它们,我无法确知。那就从bash脚本开始吧。非常感谢您,尝试了您建议的初始命令。我的sys.executable
和sys.prefix
确实不同。在尝试了一段时间后,我放弃了尝试虚拟环境。就这样,一切顺利。再次感谢你。
$ foo -m pip install discord
$ python3 -m venv foo
$ source foo/bin/activate
$ pip install discord # install all your other requirements too
#!/bin/bash
source foo/bin/activate
python /home/ubuntu/discordBot/main.py