我使用virtualenv创建了几个服务器,没有任何问题,使用了堆栈nginx - uwsgi - flask。
用当前的一个uwsgi抛出错误无法导入名称" appl"
这是myapp目录结构: / SRV /网络/ MyApp的 + run.py + venv /#virtualenv + myapp / + init .py +其他模块/ + logs /
这是/etc/uwsgi/apps-avaliable/myapp.ini
[uwsgi]
# Variables
base = /srv/www/myapp
app = run
# Generic Config
# plugins = http, python
# plugins = python
home = %(base)/venv
pythonpath = %(base)
socket = /tmp/%n.sock
module = %(app)
callable = appl
logto = %(base)/logs/uwsgi_%n.log
这是run.py
#!/usr/bin/env python
from myapp import appl
if __name__ == '__main__':
DEBUG = True if appl.config['DEBUG'] else False
appl.run(debug=DEBUG)
appl在myapp / _ init _ .py中定义为Flask()的实例
(下划线只是为了防止SO将它们变成粗体)
我准确地检查了python代码,实际上如果我手动激活虚拟环境并手动执行run.py,一切都像魅力一样,但是uwsgi不断抛出导入错误。
有什么建议我应该多搜索一下?
答案 0 :(得分:0)
修复它,它只是一个读取权限问题。整个python应用程序可由我的用户读取,但不是由组读取,因此uwsgi无法找到它。
这有点棘手,因为我使用相同的脚本成功部署了很多次,并且从未遇到过权限问题