使用node.js pm2在虚拟环境中运行python脚本

2024-05-23 15:46:22 发布

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

我想引用this question,因为我确信有人会将此标记为重复项。

我不是在寻找另一个对supervisord的引用。我确信这一切都很好,但是node PM2拥有我所需要的功能,并且更易于实现和测试。

手动启动

在原型设计期间,我创建了一个名为“p3env”的虚拟环境。在每个脚本的顶部,我放置一个bash指令:

#!./py3env/bin/python

这允许我使用这个特定的python环境执行目录中的每个脚本,而无需激活它。它非常方便和有用,当我手动启动python脚本时,它工作得很好。

当我说“用手开始”时,我应该明白我的意思。我的剧本叫“strain-to-db.py”。当我手动启动时,我通过ssh访问shell:

./strain_to_db.py

这让我需要的一切都运转起来。

PM2启动

从相对路径移动到绝对路径

为了让pm2工作,我从以下几点开始:

pm2 start ./strain_to_db.py

指定解释器

显然pm2忽略了python脚本顶部的指令,并试图使用全局“python”执行。没问题,我可以指定解释器:

pm2 start ./strain_to_db.py --interpreter /home/ubuntu/db_if/p3env/bin/python

没有骰子。再一次,尝试更多的绝对路径:

pm2 start /home/ubuntu/db_if/strain_to_db.py --interpreter /home/ubuntu/db_if/p3env/bin/python

将脚本作为命令行选项运行

现在我很沮丧。我尝试另一种策略。我尝试在命令行中使用以下命令运行python可执行文件:

/home/ubuntu/db_if/p3env/bin/python /home/ubuntu/db_if/strain_to_db.py

如果不涉及pm2,这个方法就可以了。当我尝试使用'command line argument'样式将其传递给pm2时:

pm2 start /home/ubuntu/db_if/p3env/bin/python -- /home/ubuntu/db_if/strain_to_db.py

挫败感

同样的错误。错误总是“无法导入pymysql”,它只安装在虚拟环境中。

我不知道这件事还能去哪里。我有几个脚本要添加到pm2执行监视器中,但似乎无法让其中一个脚本正确启动和运行。


Tags: topy脚本homedbifbinubuntu
1条回答
网友
1楼 · 发布于 2024-05-23 15:46:22

再看一看,邮件顶部的question that I referenced在其中一个答案中找到了线索,但没有找到答案。

当文件以.py结尾时,pm2调用“python”。。。不管怎样。我相信pm2中有一个配置文件,您可以修改它来改变这种行为。我只是从脚本中删除了“.py”,并指定了解释器:

pm2 start ./strain_to_db --interpreter ./py3env/bin/python

工作得很好。当我使用pm2创建启动脚本时,我将使用绝对路径。谢谢你的关注,我希望这对将来的人有帮助。

相关问题 更多 >