ModuleNotFoundError:没有名为'flask'的模块 - Ubuntu远程服务器

问题描述 投票:0回答:1

我目前正在通过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'
python flask
1个回答
1
投票

@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

注意:如果必须使用其他名称(如.venvvenv),请尽量避免在主目录中创建虚拟环境。这样它就不会与默认配置冲突。

© www.soinside.com 2019 - 2024. All rights reserved.