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?
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. –
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
Se potessi, ti darei +1 solo per l'utilizzo di PyCharm. Lo adoro! –