我想做什么?
激活tensorflow_p36环境并运行python wsgi.py
我的supervisord.conf
文件是什么样子的?
[program:my_program]
command = /home/ec2-user/anaconda3/envs/tensorflow_p36/bin/python /home/ec2-user/abc/wsgi.py
directory= /home/ec2-user/abc/
environment=PATH= "/home/ec2-user/anaconda3/envs/tensorflow_p36/bin"
user= ec2-user
redirect_stderr = True
stdout_logfile = /home/ec2-user/abc/logs/gunicorn/gunicorn_stdout.log
stderr_logfile = /home/ec2-user/abc/logs/gunicorn/gunicorn_stderr.log
该文件位于默认的/etc/supervisord.conf位置。
我已尝试this question中的所有解决方案,但在虚拟环境中安装的模块未被导入。例如,我在导入tensorflow、flask等时出现错误。然而,在终端中执行相同命令后
source activate tensorflow_p36
却可以正常工作。我还尝试了this answer中建议的多个程序分组,其中在第一个程序中激活虚拟环境并在第二个程序中运行python命令,并将它们组合在一起。但没有成功,仍然出现相同的导入错误。
额外信息:
当我运行
sudo service supervisord restart
时,我会收到以下消息:Stopping supervisord: [ OK ]
启动supervisord:/usr/local/lib/python2.7/site-packages/supervisor-3.3.4-py2.7.egg/supervisor/options.py:461: 用户警告:Supervisord正在以root身份运行,并在默认位置(包括其当前工作目录)中搜索其配置文件;您可能想指定一个"-c"参数,指定一个绝对路径的配置文件以提高安全性。 'Supervisord is running as root and it is searching' [ OK ]
source activate tensorflow_p36 && python /home/ec2-user/abc/wsgi.py
,但似乎不起作用。我尝试使用组(如问题中提到的),但也不起作用。您能否分享您建议的代码? - Grimlockpython
二进制文件检测到它不是系统或独立二进制文件而是虚拟环境二进制文件时,它会激活该虚拟环境。 - phd$PATH
的问题,而是关于拥有一个单独的 Python 库集合,即更改sys.path
的问题。 - phdsource
是什么,因为那是一个shell命令而不是一个程序。尝试这样做:command = bash -c "source activate tensorflow_p36 && python /home/ec2-user/abc/wsgi.py"
- VoNWooDSoN