2015-09-14 63 views
0

我對編程相當陌生。 我正在使用Pycharm IDE和燒瓶框架。 我現在試圖使用SQLAlchemy,當我嘗試運行查詢(db_create.py)在數據庫中添加東西時,它返回「SystemError:父模塊」未加載,無法執行相對導入「。不能執行相對導入(flask/pycharm)

從我在互聯網上收集的信息看來,這似乎是一個Pycharm問題,但我並不真正瞭解如何對其進行故障排除。

有沒有人有想法?

作爲參考,我的項目結構如下所示(pjctBB應作爲它的一部分列表)。

我真的很感謝你在閱讀本文的時間並幫助我。 在此先感謝!

pjctMain 
├── run.py 
pjctBB 
├── __init__.py 
├── models.py 
├── views.py 
├── pjctbb_sg.db 
└── db_create.py 

我run.py:

from pjctBB import app 
import os 

app.secret_key = os.urandom(24) 
app.run(debug=True) 

INIT

from .views import app 
from .models import * 

我models.py包含此:

from .views import db 


class User(db.Model): 

    __tablename__ = "users" 

    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String, nullable=False) 
    username = db.Column(db.String, nullable=False) 
    password = db.Column(db.String, nullable=False) 
    rank = db.Column(db.Integer, nullable=False) 

    def __init__(self, email, username, password, rank): 
     self.email = email 
     self.username = username 
     self.password = password 
     self.rank = rank 

我的(局部的)的觀點.py有以下:

from flask import Flask, \ 
        render_template, request, redirect, url_for, session, flash, json 
# from .models import register1 
import os 
from flask_sqlalchemy import SQLAlchemy 
#import sqlite3 


#from passlib.hash import bcrypt 
from functools import wraps 

app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///pjctbb_sg.db' 

# Create SQLAlchemy object 
db = SQLAlchemy(app) 

最後,我db_create.py:

from .views import db 
from .models import User 

db.create_all() 

db.session.add(User("[email protected]", "test", "000000", "50")) 

db.session.commit() 
+0

你能發佈確切的錯誤嗎? –

+0

您是否嘗試過沒有輸入的輸入。在文件前面? – sihrc

+0

[Python 3中的相對導入]的可能的重複(http://stackoverflow.com/questions/16981921/relative-imports-in-python-3) – ganduG

回答

1

做你的方式,我得到這個ValueError異常:

Traceback (most recent call last): 
    File "__init__.py", line 1, in <module> 
     from .test import Chris 

在測試工作前取出.爲了我。

或者

root 
pjct 
├── pjctBB 
    ├── __init__.py 
    ├── models.py 
    ├── views.py 
    ├── pjctbb_sg.db 
    └── db_create.py 
├── setup.py 

其中setup.py:

from setuptools import setup, find_packages 

if __name__ == "__main__": 
    setup(
     name = "pjctBB", 
     packages = find_packages(), 
     version = "0.1.0" 
    ) 

而且python setup.py develop可以導入通過

from pjctBB.models import * 
from pjctBB.views import * 
+0

嗨所有,謝謝你幫助我。我試着服用。但它沒有工作。我創建了「setup.py」文件,並按照建議修改了導入,並且工作正常。我想我必須儘快閱讀Setuptools!非常感謝,謝謝!只是一個簡單的問題:我不應該將setup.py代碼添加到我的「run.py中以執行它(或者從run.py中調用它),謝謝 – choubix

+0

您只需要運行一次setup.py即可。作爲一個由python導入的軟件包,無論你在哪裏,develop命令基本上意味着你在項目中所做的更改將反映安裝的軟件包。 – sihrc

0

您忘記插入ID列,在DB_CREATE .py