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ì đó?
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. –
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
Nếu có thể, tôi sẽ cung cấp cho bạn +1 chỉ để sử dụng PyCharm. Tôi thích nó! –