在 CentOS 7 服务器上,我通过 SCL 安装了 Python 3.6。(https://www.softwarecollections.org/en/scls/rhscl/rh-python36/)
我在 .bashrc 中有这一行来启用 SCL 的 Python 3.6
source scl_source enable rh-python36
我已经安装了 pipenv:
pip install --user pipenv
我通过命令行运行 Python 程序:
pipenv run python myprogram.py
所有这些都很好。我有一个使用用户 pipenv 的 Flask 应用程序。我正在尝试创建一个 systemd 单元文件来启动/停止/重新加载 Flask Web 应用程序。如何让 sytemd 单元文件使用通过 SCL 的 Python 和 pip 安装的用户 pipenv?
我尝试从 root 执行命令行,但出现此错误:
[root@localhost ~]# source scl_source enable rh-python36
[root@localhost ~]# /home/user/.local/bin/pipenv run python /home/user/hello.py
Traceback (most recent call last):
File "/home/user/.local/bin/pipenv", line 7, in <module>
from pipenv import cli
ModuleNotFoundError: No module named 'pipenv'
但是,我可以通过加载用户的 bash shell 通过 su -c 执行命令:
su -c 'bash -lc /home/user/.local/bin/pipenv run python hello.py' user
但这条线似乎很尴尬。我可以在 systemd 单元文件的 ExecStart 行中使用的正确行是什么?为了使用用户的 pipenv,应该包含哪些环境变量?