【发布时间】:2018-08-12 16:24:45
【问题描述】:
我正在尝试在 Ubuntu 16 服务器 (Apache2) 上部署一个 Flask 项目。在这个项目中,我使用的是 Python3 库。所以我想将 Flask 设置为在服务器上使用 Python 3。但我真的过得很糟糕。这是我正在做的事情:
sudo apt-get install apache2
sudo apt-get update
sudo apt-get install libapache2-mod-wsgi-py3 # I think that is how you install wsgi for python3
sudo apt-get install python-flask
sudo apt-get upgrade
我的项目配置:/etc/apache2/sites-available/project.conf
<VirtualHost *:80>
ServerName 52.25.54.241 #my IP
ServerAdmin admin@mywebsite.com
WSGIScriptAlias / /var/www/FlaskApps/FlaskApps.wsgi
<Directory /var/www/FlaskApps/project/>
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/FlaskApps/project/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
最后:/var/www/FlaskApps/FlaskApps.wsgi
#! /usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApps/project/")
# home points to the home.py file
from home import app as application
application.secret_key = "somesecretsessionkey"
注意: 当我像这样安装 wsgi 时:
sudo apt-get install libapache2-mod-wsgi
它可以工作,但它使用 python2。并且当我安装 wsgi 3. 它不起作用并且它说没有名为 flask 的模块。那么如何设置flask默认使用python3呢?
我读到了这个问题:Getting Flask to use Python3 (Apache/mod_wsgi) 但这对我没有帮助。我不清楚,因为他们使用的是 virtualenv。
【问题讨论】:
-
检查是否替换#! /usr/bin/python 与 #! /usr/bin/python3 有帮助吗?
-
在使用 mod_wsgi 时更改
#!行没有任何作用。使用什么版本的 Python 取决于编译 mod_wsgi 的目的。 -
如果你得到
flask不能被导入,这意味着flask包没有安装到 Python 3 安装中。如果您使用的是虚拟环境,则需要告诉 mod_wsgi 使用它。 -
您根本不应该通过
apt-get安装Flask 或其他python 依赖项。相反,使用 virtualenv 并使用pip在此处安装它们。使用发行版的包管理器将为您提供古老的版本。
标签: python python-3.x flask mod-wsgi