我目前正在通过Digitalocean Droplet创建的Ubuntu 16.04。我正在尝试运行一个简单的烧瓶应用程序。我跟着这个GUIDE然而,当我尝试运行You can run the Flask app simply by running the following command:
时,我坚持这一步python app.py
,我得到以下...
Traceback (most recent call last):
File "app.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
from apport.packaging_impl import impl as packaging
File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Original exception was:
Traceback (most recent call last):
File "app.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
另外,烧瓶已经安装好了。
Requirement already satisfied: flask in /usr/local/lib/python3.5/dist-packages (1.0.2)
Requirement already satisfied: Werkzeug>=0.14 in /usr/local/lib/python3.5/dist-packages (from flask) (0.14.1)
Requirement already satisfied: itsdangerous>=0.24 in /usr/local/lib/python3.5/dist-packages (from flask) (0.24)
Requirement already satisfied: Jinja2>=2.10 in /usr/local/lib/python3.5/dist-packages (from flask) (2.10)
Requirement already satisfied: click>=5.1 in /usr/local/lib/python3.5/dist-packages (from flask) (6.7)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/lib/python3/dist-packages (from Jinja2>=2.10->flask) (0.23)
当环境处于活动状态时,我运行python app.py
时会得到以下堆栈跟踪
Traceback (most recent call last):
File "app.py", line 10, in <module>
app.run(debug=True)
File "/home/.env/lib/python3.5/site-packages/flask/app.py", line 910, in run
cli.load_dotenv()
File "/home/.env/lib/python3.5/site-packages/flask/cli.py", line 608, in load_dotenv
dotenv.load_dotenv(path)
File "/home/.env/lib/python3.5/site-packages/dotenv/main.py", line 255, in load_dotenv
return DotEnv(f, verbose=verbose).set_as_environment_variables(override=override)
File "/home/.env/lib/python3.5/site-packages/dotenv/main.py", line 95, in set_as_environment_variables
for k, v in self.dict().items():
File "/home/.env/lib/python3.5/site-packages/dotenv/main.py", line 74, in dict
values = OrderedDict(self.parse())
File "/home/.env/lib/python3.5/site-packages/dotenv/main.py", line 79, in parse
f = self._get_stream()
File "/home/.env/lib/python3.5/site-packages/dotenv/main.py", line 62, in _get_stream
return io.open(self.dotenv_path)
IsADirectoryError: [Errno 21] Is a directory: '/home/.env'
@Abhilash看起来问题不是代码,而是关于设置。
默认情况下,Python将在主目录中查找flask环境配置,该配置通常存储在.env
文件中。在您的情况下,这是虚拟环境。因此错误。
请按照以下步骤操作:
转到用户的文档目录,例如
cd /home/rahul/Documents/
为您的烧瓶应用创建一个单独的文件夹:
mkdir flask_test_app
进入上面的目录:
cd flask_test_app
在此创建虚拟环境:
virtualenv .env
激活此虚拟环境:
source .env/bin/activate
它应该显示如下:
(.env) rahul@ramco:~/Documents/flask_test_app
安装烧瓶:
pip install Flask
将创建的烧瓶app文件放在当前文件夹中,即app.py文件。
运行应用程序:
python app.py
这将在烧瓶的默认端口5000上启动烧瓶应用程序,并在终端中显示如下所示:
* Tip: There are .env files present. Do "pip install python-dotenv" to use them.
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Tip: There are .env files present. Do "pip install python-dotenv" to use them.
* Debugger is active!
* Debugger PIN: 303-406-109
注意:如果必须使用其他名称(如.venv
或venv
),请尽量避免在主目录中创建虚拟环境。这样它就不会与默认配置冲突。