在Ubuntu 16.04中如何为uWSGI运行的Flask应用设置Python版本?
嘿,我来帮你搞定给uWSGI指定Python版本的问题~ 因为你已经用了独立虚拟环境,核心思路就是让uWSGI加载虚拟环境里的Python解释器,而不是系统默认的版本,这里有两种靠谱的方法:
方法一:修改uWSGI配置文件(myproject.ini)
打开你的myproject.ini,在[uwsgi]区块里添加一行:
home = /home/user/myproject/venv
这里的/home/user/myproject/venv要替换成你实际的虚拟环境路径。这个参数会让uWSGI自动使用虚拟环境内的Python解释器,同时加载你在虚拟环境里安装的所有依赖,完美适配你的项目环境。
方法二:修改systemd服务文件(myproject.service)
找到你myproject.service里的ExecStart指令(你当前的内容没写完,正常应该是类似ExecStart=/usr/bin/uwsgi --ini myproject.ini),把系统的uwsgi路径替换成虚拟环境里的uwsgi二进制文件路径:
ExecStart=/home/user/myproject/venv/bin/uwsgi --ini myproject.ini
这样systemd启动服务时,直接调用虚拟环境里的uWSGI,它自然会关联虚拟环境的Python版本,不会和系统Python混淆。
可选:更明确指定Python解释器
如果需要更精准控制,还可以在myproject.ini的[uwsgi]区块里直接指定Python解释器路径:
python = /home/user/myproject/venv/bin/python
不过一般用home参数就足够了,因为它会自动关联整个虚拟环境的上下文。
最后别忘了重启服务
修改完配置后,先重新加载systemd配置,再重启你的项目服务:
sudo systemctl daemon-reload sudo systemctl restart myproject.service
可以用sudo systemctl status myproject.service检查服务是否正常运行,确认Python版本是否正确加载。
内容的提问来源于stack exchange,提问作者S.Rakin
相关产品推荐
相关产品推荐

