2013-08-18 95 views
11

Tôi đang sử dụng virtualenv để thiết lập một dự án mới. Tôi đã cài đặt rất nhiều thứ bằng cách sử dụng virtualenv pip từ thư mục tập lệnh như sau:Tôi không thể nhập Flask-WTF TextField và BooleanField

flask\scripts\pip install Flask-WTF 

Tôi chưa cài đặt gói nào khác trong thư mục python toàn cầu. Mã của tôi trông giống như sau:

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

và các gói khác được tìm thấy như sqlalchemy cũng chỉ được cài đặt trong môi trường ảo.

Các lỗi tôi nhận được là:

(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 

Mẫu được tìm thấy nhưng không TextField và BooleanField. vấn đề ở đây là gì?

Cập nhật Tôi chỉ nhìn qua một số mã Flask-WTF và thấy điều này:

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

Tôi có sử dụng các ví dụ từ một phiên bản cũ hoặc một cái gì đó?

+0

này không trả lời câu hỏi của bạn, nhưng một khi bạn đang ở trong một môi trường ảo, bạn không cần phải cung cấp đường dẫn đến con trăn ảo hóa; một phần của kịch bản 'activate.bat' là thiết lập các biến shell của bạn để trỏ đến các phiên bản ảo hóa của những thứ như python.exe và pip.exe. Ngoài ra, bạn không nên đặt môi trường ảo bên trong thư mục mã nguồn của bạn (vì nó xuất hiện mà bạn đang làm). Cách tốt nhất là đặt tất cả các môi trường ảo vào thư mục riêng của chúng và sử dụng các tập lệnh kích hoạt để điều chỉnh trình bao của bạn. –

+1

Tôi không đặt nguồn trong thư mục virtualenv. Nó nằm trong thư mục 'app'. Tôi thực sự không sử dụng các kịch bản để cài đặt nhưng chạy pycharm vì vậy tôi không phải kích hoạt bất cứ điều gì trong khi thay đổi dự án. Nó xử lý tất cả những điều đó một cách tự động cho tôi. Mặc dù dù sao đi nữa! – Asken

+1

Nếu có thể, tôi sẽ cung cấp cho bạn +1 chỉ để sử dụng PyCharm. Tôi thích nó! –

Trả lời

29

Từ phiên bản 0.9.0, Flask-WTF sẽ không nhập bất kỳ thứ gì từ wtform, bạn cần phải nhập các trường từ wtforms.

Source

Bạn cần phải nhập khẩu chúng từ wtforms (lưu ý rằng theo docs tuyên bố nhập khẩu đã được thay đổi):

from flask_wtf import Form 

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

Cảm ơn! Tôi là một chút mới với điều này và có vẻ như tôi sẽ cần phải chuyển hướng dẫn ... – Asken