Я получаю досадную ошибку импорта, когда пытаюсь импортировать переменную в файл __init__.py
. Я приложил файлы и мою структуру каталогов:
#/home/me/app/app/__init__.py
from flaskext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
#/home/me/app/app/models/__init__.py
from datetime import datetime
from app import db
#shell
[me@archlinux app]$ pwd
/home/me/app
[me@archlinux app]$ ./manage.py
/home/me/app/app/__init__.pyc
Traceback (most recent call last):
File "./manage.py", line 7, in <module>
from app import app
File "/home/me/app/app/__init__.py", line 3, in <module>
from app.views.post import post
File "/home/me/app/app/views/post.py", line 4, in <module>
from app.models import Post
File "/home/me/app/app/models/__init__.py", line 5, in <module>
from app import db
ImportError: cannot import name db
[me@archlinux app]$ tree
.
├── apikey.txt
├── manage.py
├── app
│ ├── forms
│ │ ├── __init__.py
│ │ └── __init__.py~
│ ├── __init__.py
│ ├── __init__.py~
│ ├── __init__.pyc
│ ├── models
│ │ ├── __init__.py
│ │ ├── __init__.py~
│ │ └── __init__.pyc
│ ├── static
│ │ ├── css
│ │ │ └── style.css
│ │ ├── images
│ │ │ ├── favicon.png
│ │ │ ├── logo.png
│ │ │ ├── text_logo.png
│ │ │ ├── thumb_down_active.png
│ │ │ ├── thumb_down_inactive.png
│ │ │ ├── thumb_up_active.png
│ │ │ └── thumb_up_inactive.png
│ │ ├── js
│ │ │ └── index.js
│ │ └── sitemap.xml
│ ├── templates
│ │ ├── 404.html
│ │ ├── 500.html
│ │ ├── about.html
│ │ ├── base.html
│ │ ├── feedback
│ │ │ └── feedback_form.html
│ │ ├── form.html
│ │ ├── posts
│ │ │ ├── comment.html
│ │ │ ├── post.html
│ │ │ └── posts.html
│ │ ├── spam.html
│ │ ├── terms.html
│ │ └── users
│ │ ├── login_form.html
│ │ └── sign_up_form.html
│ ├── util
│ │ ├── forms.py
│ │ ├── honeypot.py
│ │ ├── __init__.py
│ │ ├── __init__.py~
│ │ ├── json_http.py
│ │ ├── models.py
│ │ └── spam.py
│ └── views
│ ├── feedback.py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── post.py
│ ├── post.pyc
│ └── user.py
├── settings.py
├── settings.pyc
└── TiddlyWiki.html
13 directories, 49 files
В чем может быть проблема?
Некоторые играют с pdb_trace (), помещенным прямо перед импортом:
(Pdb) import app
(Pdb) app
<module 'app' from '/home/ramin/app/app/__init__.pyc'>
(Pdb) dir(app)
['Flask', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'views']
нет базы данных в приложении:)