2013-08-18 7 views
11

Ich benutze virtualenv, um ein neues Projekt einzurichten. Ich installierte eine Menge Dinge mit virtualenv wie unten aus dem Skript Ordner pip:Ich kann Flask-WTF TextField und BooleanField nicht importieren

flask\scripts\pip install Flask-WTF 

Ich habe keine anderen im globalen Python-Ordner installierten Pakete. Mein Code sieht wie folgt aus:

# Importing TextField and BooleanField is not working... 
from flask.ext.wtf import Form, TextField, BooleanField 
from flask.ext.wtf import Required 


class LoginForm(Form): 
    openid = TextField('openid', validators=[Required()]) 
    remember_me = BooleanField('remember_me', default=False) 

und andere Pakete sind wie sqlalchemy auch installiert nur in der virtuellen Umgebung gefunden.

Der Fehler, den ich bekommen ist:

(flask) D:\Development\grading>flask\Scripts\python.exe restserver.py Traceback (most recent call last): 
File "restserver.py", line 1, in <module> from app import app 
File "D:\Development\grading\app\__init__.py", line 12, in <module> from forms import LoginForm 
File "D:\Development\grading\app\forms.py", line 1, in <module> from flask.ext.wtf import Form, TextField, BooleanField 
File "D:\Development\grading\flask\lib\site-packages\flask\exthook.py", line 87, in load_module 
raise ImportError('No module named %s' % fullname) ImportError: No module named flask.ext.wtf.TextField 

Formular gefunden wird, aber nicht TextField- und BooleanField. Was ist das Problem hier?

aktualisieren Ich sah nur durch einige der Flask-WTF-Code und fanden diese:

from flask.ext.wtf import Form 
from wtforms.fields import TextField, BooleanField 
from wtforms.validators import Required 

Bin ich mit Beispielen von einer älteren Version oder so etwas?

+0

diese Antwort Ihre Frage nicht, aber wenn Sie sind in ein Virtuelle Umgebung müssen Sie den Pfad zum virtualisierten Python nicht angeben. Ein Teil des 'activate.bat'-Skripts richtet Ihre Shell-Variablen so ein, dass sie auf die virtualisierten Versionen von Dingen wie python.exe und pip.exe verweisen. Außerdem sollten Sie die virtuelle Umgebung nicht in Ihr Quellcodeverzeichnis einfügen (so wie es aussieht). Die beste Vorgehensweise besteht darin, alle virtuellen Umgebungen in ein eigenes separates Verzeichnis zu stellen und die Aktivierungsskripte zum Anpassen der Shell zu verwenden. –

+1

Ich stelle keine Quelle in den virtualenv-Ordner. Es ist im 'app' Ordner. Ich benutze die Skripte eigentlich nicht zur Installation, sondern zum Ausführen von pycharm, damit ich während des Änderns des Projekts nichts aktivieren muss. Es behandelt das alles automatisch für mich. Trotzdem trotzdem danke! – Asken

+1

Wenn ich könnte, würde ich Ihnen +1 nur für die Verwendung von PyCharm geben. Ich liebe es! –

Antwort

29

Ab Version 0.9.0 importiert Flask-WTF nichts mehr von wtforms, Sie müssen Felder aus wtforms importieren.

Source

Sie müssen sie von wtforms importieren (beachten Sie, dass nach docs Import-Anweisung geändert wurde):

from flask_wtf import Form 

from wtforms import TextField, BooleanField 
from wtforms.validators import Required 
+0

Danke! Ich bin ein bisschen neu und es scheint, als müsste ich Tutorial wechseln ... – Asken