python - 无法执行相对导入(flask/pycharm)

标签 python sql flask sqlalchemy flask-sqlalchemy

我对编程还很陌生。 我正在使用 Pycharm IDE 和 Flask 框架。 我现在正在尝试使用 SQLAlchemy,当我尝试运行查询(db_create.py)以在数据库中添加内容时,它返回“SystemError:父模块''未加载,无法执行相对导入”。

根据我在互联网上收集的信息,这似乎是 Pycharm 问题,但我不太明白如何解决它。

请问有人有想法吗?

作为引用,我的项目结构如下(pjctBB 应制成表格,因为它是 pjctMain 的一部分)。

非常感谢您花时间阅读本文并帮助我解决问题。 提前致谢!

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

我的(部分)views.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("test@test.com", "test", "000000", "50"))

db.session.commit()

最佳答案

按照你的方式做,我得到这个 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.pydevelop允许您通过

导入
from pjctBB.models import *
from pjctBB.views import *

关于python - 无法执行相对导入(flask/pycharm),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32557686/

相关文章:

python - 折叠数据框枢轴到单行

php - 如何统计MySQL中最畅销的产品?

SQL:查找字符串中连续的重复字符

mysql - 获取对话的第一条消息

python - pip 无法安装 install_requires 中列出的软件包

python - 将 Wakari 笔记本移动到另一个目录

python - Flask 在 try catch 运行时错误后无法引发 HTTP 异常

javascript - 根据用户点击的内容重定向到其中包含 id 的 url

docker - Flask url_for在由docker运行时生成http而不是https

python - 我扩展 QApplication 并在 exec_ 之后调用方法不起作用