2013-08-18 5 views
11

Sto usando virtualenv per impostare un nuovo progetto. Ho installato un sacco di cose usando virtualenv pip dalla cartella script come di seguito:Non riesco ad importare Flask-WTF TextField e BooleanField

flask\scripts\pip install Flask-WTF 

ho altri pacchetti installati nella cartella python globale. Il mio codice è simile al seguente:

# 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) 

e altri pacchetti si trovano come sqlalchemy installato anche solo in un ambiente virtuale.

L'errore che ottengo è:

(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 

forma si trova, ma non TextField e BooleanField. Qual è il problema qui?

Aggiornamento Ho appena guardato attraverso una parte del codice Flask-WTF e abbiamo trovato questo:

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

sto utilizzando esempi tratti da una versione precedente o qualcosa del genere?

+0

Ciò non rispondere alla tua domanda, ma una volta che sono in una ambiente virtuale, non è necessario fornire il percorso per il python virtualizzato; parte dello script 'activate.bat' sta configurando le variabili della shell per puntare alle versioni virtualizzate di cose come python.exe e pip.exe. Inoltre, non dovresti mettere l'ambiente virtuale all'interno della directory del codice sorgente (come sembra che tu stia facendo). La migliore pratica è mettere tutti i virtualenvironments nella propria directory separata e utilizzare gli script di attivazione per regolare la shell. –

+1

Non sto mettendo l'origine nella cartella virtualenv. È nella cartella 'app'. In realtà non sto utilizzando gli script da installare ma eseguendo pycharm, quindi non devo attivare nulla durante la modifica del progetto. Gestisce tutto ciò automagicamente per me. Grazie comunque! – Asken

+1

Se potessi, ti darei +1 solo per l'utilizzo di PyCharm. Lo adoro! –

risposta

29

Dalla versione 0.9.0, Flask-WTF non importa nulla da wtforms, è necessario importare i campi da wtforms.

Source

è necessario importare loro di wtforms (si noti che in base alla docs istruzione import è stato cambiato):

from flask_wtf import Form 

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

Grazie! Sono un po 'nuovo a questo e sembra che avrò bisogno di cambiare tutorial ... – Asken