如何使Flask默认使用Python 3

时间:2018-03-05 03:56:20

标签: python python-3.x flask mod-wsgi

我正在尝试在Ubuntu 16服务器(Apache2)上部署Flask项目。在这个项目中,我使用的是Python3库。所以我想将Flask设置为在服务器上使用Python 3。但我真的很难受。这就是我在做的事情:

DirectoryTableBase

我的项目conf: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

注意: 当我像这样安装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"

它可以工作,但它使用python2。当我安装wsgi 3.它不起作用,它说没有名为flask的模块。那么如何设置flask以默认使用python3?

我读到了这个问题:Getting Flask to use Python3 (Apache/mod_wsgi) 但它没有帮助我。我不清楚,因为他们正在使用virtualenv。

2 个答案:

答案 0 :(得分:6)

将Python 3设置为默认值是我相信的。

运行which python表明2.7是默认运行ln -sf /usr/bin/python3 /usr/bin/python,以使Python 3成为默认值。这是我在全新安装的Ubuntu上安装Flask时总是采取的步骤。

答案 1 :(得分:0)

我建议您为每个项目使用一个新的虚拟环境,因此,如果要创建一个以python3.7作为默认环境的虚拟环境(最好将ubuntu16.04上的python3默认保持为python3.5)其他程序依赖它),

virtualenv -p python3.7 name_of_your_venv 

之后,您可以选择在安装python依赖项之前激活venv(源./name_of_your_venv/bin/activate),也可以不激活而进行选择:

./name_of_your_venv/bin/pip install -r requirements.txt

您还必须将.py文件的第一行更改为

#! /usr/bin/python 

#! /path/to/name_of_your_venv/bin/python 

这将使您不必混淆可能导致头痛的不同python包