【问题标题】:Can't Import Files in vscodevscode无法导入文件
【发布时间】:2022-01-10 23:44:39
【问题描述】:

我刚开始使用 vscode,我正在尝试从同一目录中的其他文件导入导入表单和类,但由于某种原因它无法正常工作。它在 pycharm 中工作,所以我复制了所有代码。

这是我要导入的主文件:

from flask import Flask, render_template, url_for, flash, redirect
from flask_sqlalchemy import SQLAlchemy
from forms import RegistrationForm, LoginForm
from models import User, Post

forms.py

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, Email, EqualTo

class RegistrationForm(FlaskForm):
    username = StringField('Username',
                           validators=[DataRequired(),
                           Length(min = 2, max=20)])
    email = StringField('Email',
                        validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired(),
                            EqualTo('password')])
    confirm_password = PasswordField('Confirm Password',
                                      validators=[DataRequired(),
                                                     EqualTo('password')])
    submit = SubmitField('Sign up')

class LoginForm(FlaskForm):

    email = StringField('Email',
                        validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired(),
                            EqualTo('password')])
    remember = BooleanField('Remember Me')
    submit = SubmitField('Login')

models.py

from datetime import datetime
from __main__ import db


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable= False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), unique=False, nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True )

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"

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


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Post('{self.title }','{self.date_posted}')"

【问题讨论】:

  • 您遇到了什么错误?
  • 如果这些文件都在同一个目录下,可以试试from .forms import...,注意forms前面的点
  • 您能用更多信息描述您的问题吗?错误是什么,错误是如何发生的?
  • 你设置了python解释器路径吗?
  • 不,我该怎么做@Sevy?

标签: python visual-studio-code


【解决方案1】:

看起来你需要在 settings.json 文件中添加这个:

  "terminal.integrated.env.windows": {
    "PYTHONPATH": "${workspaceFolder};"
  },

在 Pycharm 中默认添加:Add content roots to PYTHONPATH。您可以在 PyCharm 中点击Edit Configurations 查找。

【讨论】:

  • 非常感谢!这对我有帮助。我只是在没有真正学习如何正确使用它的情况下跳上 vs code..
  • @icedcapp 如果有帮助,您能接受并点赞吗?谢谢。
  • 它有效,但我通过复制粘贴在另一个 vscode 窗口/文件夹上尝试了相同的代码。它在一个文件夹中有效,但在另一个文件夹中无效。你知道为什么吗?
  • @icedcapp 很抱歉迟到了。如果要导入模块或python文件,需要将模块或python文件的父文件夹路径添加到PYTHONPATH变量中。正如您所提到的,它在 PyCharm 中有效,而在 VSCode 中无效,您的 python 文件的父文件夹应该在您的工作区文件夹下。所以你只需要添加${workspaceFolder};。但其实是${workspaceFolder}\xxx\parent folder your python file
猜你喜欢
  • 2021-07-02
  • 2020-02-19
  • 1970-01-01
  • 2021-03-17
  • 2020-12-31
  • 2021-09-11
  • 2021-07-08
  • 2021-01-31
  • 2022-01-04
相关资源
最近更新 更多