2017-06-20 46 views
0

__init__.py用於將磁盤上的目錄標記爲Python包目錄。可以說,我們有文件__init__.py是否必須位於python應用程序的每個目錄中?

py/src/__init__.py 
py/src/user.py 

和PY是你的道路上,你可以導入代碼user.py爲:

import src.module 

from src import user 

如果我們去掉__init__.py文件,Python將不再在該目錄內查找子模塊,因此嘗試導入模塊將失敗。

但在我的應用程序__init__.py不起作用。

__init__ .py

__all__ = ['models', 'common'] 
from src.models.user import User  
from src.models.post import Post 
from src.models.blog import Blog 

當我運行python app.py

錯誤:

Traceback (most recent call last): 
    File "src/app.py", line 5, in <module> 
    from src.models.user import User 
ModuleNotFoundError: No module named 'src' 

App.py文件:

import os 
import sys 

from flask import Flask, render_template, request, session 
from src.models.user import User 

app = Flask(__name__) #'__main__' 

@app.route('/') # 'OUrsite.com/api/' 
# def hello world ot test the first api call 
def hello_method(): 
    return render_template('login.html') 

@app.route('/login') 
def login_user(): 
    email = request.form['email'] 
    password = request.form['password'] 
    if User.login_valid(email, password): 
     User.login(email) 
    return render_template("profile.html", email=session['email']) 

if __name__ == '__main__': 
    app.run(port = 9100) 

我缺少的東西?

回答

1

的解決方案是這一問題。 1:首先有兩點需要理解,virtualenv的根目錄和您的系統環境存在差異。 Virtualenv將你的項目目錄設置爲根目錄。但是如果你不使用virtualenv,根目錄就是我的體驗目錄。因此,在創建__init__py時請記住,如果沒有virtualenv或者您沒有導入任何東西,它可以是空的。

簡單__init_.py例子:

# in your __init__.py 
from file import File 

# now import File from package 
from package import File 

初始化的.py

import src 
from src import * 
from .models.user import User 
from .models.post import Post 
from .models.blog import Blog 

而當你在app.py或SRC /模型/ user.py這在導入同一目錄&子目錄中不包括src:

from models.user import User 
from common.database import Database 
1

您沒有先導入src

import src 

__all__ = ['models', 'common'] 
from src.models.user import User 
from src.models.post import Post 
from src.models.blog import Blog 

如果這是src/__init__.py,你可以使用相對導入:

from __future__ import absolute_import 

from .models.user import User 
from .models.post import Post 
from .models.blog import Blog 
+0

什麼未來。是的,它在src我也應該上傳我的app.py文件 – Frrank

+0

我試過你的建議,但沒有任何工作。 – Frrank

相關問題