Python 3.x Pip3为所有用户安装模块

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

我不确定我是应该在这里问这个问题,还是在Linux堆栈溢出上问这个问题,但问题来了

我对python比较陌生,我一直在努力让这个python脚本在aws机器上自动启动。我需要安装两个模块“discord.py”和“watson cloud developer”。Pip3安装上述模块时没有错误。当尝试运行运行运行python脚本的脚本的服务(Total love systemd)时,我收到一个错误,告诉我没有安装discord模块,请参见下文

我非常乐意提供更多的信息

编辑:

服务:

[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