[英]Python: Unable to import module
我正在從https://blog.miguelgrinberg.com/學習燒瓶
我有應用程序微博,文件名為microblog.py
from app import app
而且我有一個名為app
目錄,它包含帶有以下代碼的__init__.py
from flask import Flask
from config import Config
app = Flask( __name__ )
app.config.from_object(Config)
from app import routes
但是當我運行flask run
我得到了錯誤
ImportError: No module named 'app'
我了解,例如,如果我想將目錄指示為軟件包,則必須在目錄內包含__init__.py
,而對於app
目錄則必須這樣做。
目錄結構
.
├── __init__.py
├── app
│ ├── __init__.py
│ ├── forms.py
│ ├── routes.py
│ └── templates
│ ├── base.html
│ ├── index.html
│ └── login.html
├── config.py
└── microblog.py
完整的堆棧跟蹤
flask run
* Serving Flask app "microblog.py"
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
Usage: flask run [OPTIONS]
Error: While importing "microblog.microblog", an ImportError was raised:
Traceback (most recent call last):
File "~/anaconda3/envs/flask_python3.5.2/lib/python3.5/site-packages/flask/cli.py", line 235, in locate_app
__import__(module_name)
File "~/learning/migual_flask/microblog/microblog.py", line 1, in <module>
from app import app
ImportError: No module named 'app'
這段代碼一直工作到最近,突然開始引起麻煩。 我無法找到問題所在。
任何幫助,不勝感激。
謝謝。
好的,根據您在層次結構中發布的內容,很明顯它應該可以工作,但是我懷疑您是從錯誤的目錄導入的。
給定目錄:
.
├── __init__.py
├── app
│ ├── __init__.py
│ ├── forms.py
│ ├── routes.py
│ └── templates
│ ├── base.html
│ ├── index.html
│ └── login.html
├── config.py
└── microblog.py
假設您從根目錄(頂部的“。”)導入它們:
$ls
__init__.py app config.py microblog.py
$ls app
__init__.py forms.py routes.py
# which works
>>> import config
>>> import microblog
>>> import app
# and
>>> from app import routes
>>> from app import forms
我注意到您的app/__init__.py
有app = Flask()
,這是一個非常糟糕的做法,應盡可能避免(這使您認為這很好,我想不到),但是這個對我有用:
>>> import app
>>> from app import app
# the first app is module
# the second is app = Flask()
# but the second one will overwrite the first one's name
# which is another terrible practice
您可以檢查模塊:
>>> import app
>>> help(app) # app = Flask() is there
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.