如何让 Flask 默认使用 Python 3
How to make Flask use Python 3 by default
我正在尝试在 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。
我相信将 Python 3 设置为默认值就是您要找的。
运行 which python
表明 2.7 是默认值 运行 ln -sf /usr/bin/python3 /usr/bin/python
使 Python 3 成为默认值。这是我在 Ubuntu 的全新安装上设置 Flask 时总是采取的步骤。
我建议你为每个项目使用一个新的虚拟环境,所以如果你想创建一个默认使用 python3.7 的虚拟环境(最好让 python3 默认为python3.5 在 ubuntu16.04 上至少因为其他程序依赖它),
virtualenv -p python3.7 name_of_your_venv
之后,您可以选择在安装 python 依赖项( source ./name_of_your_venv/bin/activate )之前激活您的 venv,或者您可以在不激活它的情况下进行:
./name_of_your_venv/bin/pip install -r requirements.txt
您还必须将 .py 文件的第一行从
#! /usr/bin/python
到
#! /path/to/name_of_your_venv/bin/python
这将使您不会混淆不同的 python 包,这可能会导致头痛
我正在尝试在 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。
我相信将 Python 3 设置为默认值就是您要找的。
运行 which python
表明 2.7 是默认值 运行 ln -sf /usr/bin/python3 /usr/bin/python
使 Python 3 成为默认值。这是我在 Ubuntu 的全新安装上设置 Flask 时总是采取的步骤。
我建议你为每个项目使用一个新的虚拟环境,所以如果你想创建一个默认使用 python3.7 的虚拟环境(最好让 python3 默认为python3.5 在 ubuntu16.04 上至少因为其他程序依赖它),
virtualenv -p python3.7 name_of_your_venv
之后,您可以选择在安装 python 依赖项( source ./name_of_your_venv/bin/activate )之前激活您的 venv,或者您可以在不激活它的情况下进行:
./name_of_your_venv/bin/pip install -r requirements.txt
您还必须将 .py 文件的第一行从
#! /usr/bin/python
到
#! /path/to/name_of_your_venv/bin/python
这将使您不会混淆不同的 python 包,这可能会导致头痛