2016-10-10 23 views
1

をインポートすることはできません私はアップロードファイルにフラスコ-曇りを使用しようとするが、私はストレージ(フラスコ-曇りでモデル)をインポートすることはできません これは私がそれをconfigの方法です:フラスコはImportError:名記憶

class DevelopmentConfig(): 
    DEBUG = True 
    SECRET_KEY = 'I_will_never_told_you' 
    STORAGE_PROVIDER = "LOCAL" 
    STORAGE_CONTAINER = "./data" 
    STORAGE_KEY = "" 
    STORAGE_SECRET = "" 
    STORAGE_SERVER = True 

と私はアプリ/ のinitの.pyでそれを初期化:私は

を試してみました :

from flask import Flask, redirect, request, url_for, g 
from .main import main as main_blueprint 
from .auth import auth as auth_blueprint 
from config import DevelopmentConfig 
from flask_login import LoginManager 
from flask_cloudy import Storage  #import Storage 

login_manager = LoginManager() 
login_manager.session_protection = 'strong' 
login_manager.login_view = 'auth.login' 

def create_app(): 
    app = Flask(__name__) 
    app.config.from_object(DevelopmentConfig) 
    app.register_blueprint(main_blueprint) 
    app.register_blueprint(auth_blueprint, url_prefix='/auth') 
    login_manager.init_app(app) 

    storage = Storage()  
    storage.init_app(app)  #initialise it 

    @login_manager.user_loader 
    def load_user(user_id): 
     from .models import User 
     try: 
      user = User.get(User.id == int(user_id)) 
     except User.DoesNotExist: 
      user = None 
     return user 

    @login_manager.unauthorized_handler 
    def unauthorized_callback(): 
     return redirect(url_for('auth.login')) 

    return app 

その後、私はアプリ/メイン/ views.pyにストレージをインポートしよう

from .. import storage 

from ..__init__ import storage 

が、私はそれがこのように育つfrom app import storagefrom .. import storage を使用する場合、それはまだうまく を動作することはできません。

Traceback (most recent call last): 
    File "run.py", line 1, in <module> 
    from app import create_app 
    File "/home/lc/workspace/homeworkAdminSystem/app/__init__.py", line 2, in <module> 
    from .main import main as main_blueprint 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/__init__.py", line 5, in <module> 
    from . import views, errors 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/views.py", line 5, in <module> 
    from .. import storage 
ImportError: cannot import name storage 

私が試したときにfrom ..__init__ import storage それが表示されます。

Traceback (most recent call last): 
    File "run.py", line 1, in <module> 
    from app import create_app 
    File "/home/lc/workspace/homeworkAdminSystem/app/__init__.py", line 2, in <module> 
    from .main import main as main_blueprint 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/__init__.py", line 5, in <module> 
    from . import views, errors 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/views.py", line 6, in <module> 
    from ..__init__ import storage 
    File "/home/lc/workspace/homeworkAdminSystem/app/__init__.py", line 3, in <module> 
    from .auth import auth as auth_blueprint 
    File "/home/lc/workspace/homeworkAdminSystem/app/auth/__init__.py", line 5, in <module> 
    from . import views 
    File "/home/lc/workspace/homeworkAdminSystem/app/auth/views.py", line 4, in <module> 
    from ..models import db, User, Homework, Score 
    File "/home/lc/workspace/homeworkAdminSystem/app/models.py", line 3, in <module> 
    from .__init__ import login_manager 
ImportError: cannot import name login_manager 

、ここではそれに私のモデル(アプリ/モデル)である私がfrom .__init__ import login_managerを使用しますが、それはうまく働いたので、私はそれを混同していますので、どのように私は私のviews.pyにストレージをインポートすることができます?

答えて

0

create_app機能の外でストレージの初期化を行う必要があります。

storage変数は、create_app関数内でのみアクセス可能です。

+0

ああ、私は今すぐ自分のPCを手に入れたいと思っています。私は明日の朝にお試しになります。ありがとうございます。 –

+0

私はcreate_appの外にストレージinitialistaを入れようとしましたが、それでも動作することはできません。何でもありがとう。 –

+0

多分機能を完全に取り除くことができますか?または、ストレージ変数も返すことができます – David

関連する問題