質問編集履歴

2

質問削除の取り消し

2018/02/07 08:11

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1
+ flask-adminモジュールについて/importができない
test CHANGED
@@ -1 +1,175 @@
1
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1
+ ご教授願います。
2
+
3
+ 現在Flaskを利用したwebアプリを作成しており、管理画面作成にはFlask-Adminモジュールを使用しようと思っております。
4
+
5
+ python自体が初めて1週間ほどの素人ですので、本を読みながら進めているのですが、どうも本とまったく同じコードを実装してもエラーが出てしまいます。
6
+
7
+ プログラムの目的としては、まずはモデルと紐付けをしたデータベースの内容を管理画面に表示するだけという簡易なものです。
8
+
9
+ 環境
10
+
11
+ ・mac high sierra
12
+
13
+ ・pycharm
14
+
15
+ ・python3.6.4
16
+
17
+ ・mysql5.6
18
+
19
+ 使用しているファイル(実際に書いたコード)は2つで、
20
+
21
+ ・flask_admin_server.py(メイン)
22
+
23
+ ・app_db.py
24
+
25
+ ```python
26
+
27
+ from flask import Flask
28
+
29
+ import flask_admin
30
+
31
+ from flask_admin.contrib.peewee import ModelView # ここでエラー
32
+
33
+ import app_db
34
+
35
+ app = Flask(__name__)
36
+
37
+ # app.config['SECRET_KEY']
38
+
39
+ class WriterAdmin(ModelView):
40
+
41
+ column_display_pk = True
42
+
43
+ column_sortable_list = ('id', 'name', 'is_active')
44
+
45
+ column_filters = column_sortable_list
46
+
47
+ column_editable_list = ('name', 'is_active')
48
+
49
+ form_columns = column_sortable_list
50
+
51
+ def on_model_change(self, form, model, is_created):
52
+
53
+ if is_created:
54
+
55
+ model.save(force_insert = True)
56
+
57
+ @app.route('/')
58
+
59
+ def index():
60
+
61
+ return '<a href="/admin/">Click!</a>'
62
+
63
+ if __name__ == '__main__':
64
+
65
+ admin = flask_admin.Admin(app, name = 'Example: Peewee')
66
+
67
+ admin.add_view(WriterAdmin(app_db.Writer))
68
+
69
+ app.run(debug = True)
70
+
71
+ ```
72
+
73
+ ```python
74
+
75
+ import datetime
76
+
77
+ import peewee
78
+
79
+ from playhouse.pool import PooledMySQLDatabase
80
+
81
+ db = PooledMySQLDatabase(
82
+
83
+ '○○○',
84
+
85
+ max_connections = 8,
86
+
87
+ stale_timeout = 10,
88
+
89
+ user = '○○○',
90
+
91
+ password = '○○○',
92
+
93
+ unix_socket = '/Applications/MAMP/tmp/mysql/mysql.sock'
94
+
95
+ )
96
+
97
+ class BaseModel(peewee.Model):
98
+
99
+ created_at = peewee.DateTimeField(default = datetime.datetime.utcnow)
100
+
101
+ updated_at = peewee.DateTimeField()
102
+
103
+ def save(self, *args, **kwargs):
104
+
105
+ self.updated_at = datetime.datetime.utcnow()
106
+
107
+ super().save(*args, **kwargs)
108
+
109
+ class Meta:
110
+
111
+ database = db
112
+
113
+ class Writer(BaseModel):
114
+
115
+ id = peewee.IntegerField(primary_key = True)
116
+
117
+ name = peewee.CharField()
118
+
119
+ is_active = peewee.BooleanField()
120
+
121
+ class Meta:
122
+
123
+ db_table = 'writers'
124
+
125
+ ```
126
+
127
+ **エラー内容**
128
+
129
+ ```console
130
+
131
+ /Users/○○○/.pyenv/versions/3.6.4/bin/python
132
+
133
+ /Users/○○○/Desktop/python/flask_admin_server.py
134
+
135
+ Traceback (most recent call last):
136
+
137
+ File "/Users/○○○/Desktop/python/flask_admin_server.py", line 3, in <module>
138
+
139
+ from flask_admin.contrib.peewee import ModelView
140
+
141
+ File "/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/__init__.py", line 8, in <module>
142
+
143
+ from .view import ModelView
144
+
145
+ File "/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/view.py", line 15, in <module>
146
+
147
+ from .form import get_form, CustomModelConverter, InlineModelConverter, save_inline
148
+
149
+ File "/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/form.py", line 3, in <module>
150
+
151
+ from peewee import (CharField, DateTimeField, DateField, TimeField,
152
+
153
+ ImportError: cannot import name 'BaseModel'
154
+
155
+ Process finished with exit code 1
156
+
157
+ ```
158
+
159
+ /Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/form.pyでBaseModelがインポートできてないということでしたので、form.pyの該当部分を追って見たところ、下記のソースコードが書いてありました。
160
+
161
+ ```python
162
+
163
+ from peewee import (CharField, DateTimeField, DateField, TimeField,
164
+
165
+ PrimaryKeyField, ForeignKeyField, BaseModel)
166
+
167
+ ```
168
+
169
+ flask_admin/contrib/peewee/form.pyはさらに/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/peewee.pyのBaseModelをimportしようとしているようですが、peewee.pyにはBaseModelメンバはありません。(BaseModel以外のメンバは全てありました)
170
+
171
+ この時点で頭が?なのですが、どなたか原因と解決法を教えていただけますでしょうか。
172
+
173
+ 進めていた本にはモジュールのインストール場所を特に指定することもなく、とりあえずいろいろとインストールしていたので、それの影響かもしれません。
174
+
175
+ それではどうぞ宜しくお願いいたします。

1

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

2018/02/07 08:11

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- flask-adminモジュールについて/importができない
1
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test CHANGED
@@ -1,247 +1 @@
1
- ご教授願います。
2
-
3
-
4
-
5
- 現在Flaskを利用したwebアプリを作成しており、管理画面作成にはFlask-Adminモジュールを使用しようと思っております。
6
-
7
- python自体が初めて1週間ほどの素人ですので、本を読みながら進めているのですが、どうも本とまったく同じコードを実装してもエラーが出てしまいます。
8
-
9
-
10
-
11
- プログラムの目的としては、まずはモデルと紐付けをしたデータベースの内容を管理画面に表示するだけという簡易なものです。
12
-
13
-
14
-
15
- 環境
16
-
17
- ・mac high sierra
18
-
19
- ・pycharm
20
-
21
- ・python3.6.4
22
-
23
- ・mysql5.6
24
-
25
-
26
-
27
- 使用しているファイル(実際に書いたコード)は2つで、
28
-
29
- ・flask_admin_server.py(メイン)
30
-
31
- ・app_db.py
32
-
33
-
34
-
35
- ```python
36
-
37
- from flask import Flask
38
-
39
- import flask_admin
40
-
41
- from flask_admin.contrib.peewee import ModelView # ここでエラー
42
-
43
- import app_db
44
-
45
-
46
-
47
- app = Flask(__name__)
48
-
49
-
50
-
51
-
52
-
53
- # app.config['SECRET_KEY']
54
-
55
-
56
-
57
-
58
-
59
- class WriterAdmin(ModelView):
60
-
61
- column_display_pk = True
62
-
63
- column_sortable_list = ('id', 'name', 'is_active')
64
-
65
- column_filters = column_sortable_list
66
-
67
- column_editable_list = ('name', 'is_active')
68
-
69
- form_columns = column_sortable_list
70
-
71
-
72
-
73
- def on_model_change(self, form, model, is_created):
74
-
75
- if is_created:
76
-
77
- model.save(force_insert = True)
78
-
79
-
80
-
81
-
82
-
83
- @app.route('/')
84
-
85
- def index():
86
-
87
- return '<a href="/admin/">Click!</a>'
88
-
89
-
90
-
91
-
92
-
93
- if __name__ == '__main__':
94
-
95
- admin = flask_admin.Admin(app, name = 'Example: Peewee')
96
-
97
- admin.add_view(WriterAdmin(app_db.Writer))
98
-
99
-
100
-
101
- app.run(debug = True)
102
-
103
-
104
-
105
- ```
106
-
107
-
108
-
109
- ```python
110
-
111
- import datetime
112
-
113
- import peewee
114
-
115
- from playhouse.pool import PooledMySQLDatabase
116
-
117
-
118
-
119
- db = PooledMySQLDatabase(
120
-
121
- '○○○',
122
-
123
- max_connections = 8,
124
-
125
- stale_timeout = 10,
126
-
127
- user = '○○○',
128
-
129
- password = '○○○',
130
-
131
- unix_socket = '/Applications/MAMP/tmp/mysql/mysql.sock'
132
-
133
- )
134
-
135
-
136
-
137
-
138
-
139
- class BaseModel(peewee.Model):
140
-
141
- created_at = peewee.DateTimeField(default = datetime.datetime.utcnow)
142
-
143
- updated_at = peewee.DateTimeField()
144
-
145
-
146
-
147
- def save(self, *args, **kwargs):
148
-
149
- self.updated_at = datetime.datetime.utcnow()
150
-
151
- super().save(*args, **kwargs)
152
-
153
-
154
-
155
- class Meta:
156
-
157
- database = db
158
-
159
-
160
-
161
-
162
-
163
- class Writer(BaseModel):
164
-
165
- id = peewee.IntegerField(primary_key = True)
166
-
167
- name = peewee.CharField()
168
-
169
- is_active = peewee.BooleanField()
170
-
171
-
172
-
173
- class Meta:
174
-
175
- db_table = 'writers'
176
-
177
-
178
-
179
- ```
180
-
181
-
182
-
183
- **エラー内容**
184
-
185
-
186
-
187
- ```console
188
-
189
- /Users/○○○/.pyenv/versions/3.6.4/bin/python
190
-
191
- /Users/○○○/Desktop/python/flask_admin_server.py
192
-
193
- Traceback (most recent call last):
194
-
195
- File "/Users/○○○/Desktop/python/flask_admin_server.py", line 3, in <module>
196
-
197
- from flask_admin.contrib.peewee import ModelView
198
-
199
- File "/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/__init__.py", line 8, in <module>
200
-
201
- from .view import ModelView
202
-
203
- File "/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/view.py", line 15, in <module>
204
-
205
- from .form import get_form, CustomModelConverter, InlineModelConverter, save_inline
206
-
207
- File "/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/form.py", line 3, in <module>
208
-
209
- from peewee import (CharField, DateTimeField, DateField, TimeField,
210
-
211
- ImportError: cannot import name 'BaseModel'
212
-
213
-
214
-
215
- Process finished with exit code 1
216
-
217
- ```
218
-
219
-
220
-
221
- /Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/flask_admin/contrib/peewee/form.pyでBaseModelがインポートできてないということでしたので、form.pyの該当部分を追って見たところ、下記のソースコードが書いてありました。
222
-
223
-
224
-
225
- ```python
226
-
227
- from peewee import (CharField, DateTimeField, DateField, TimeField,
228
-
229
- PrimaryKeyField, ForeignKeyField, BaseModel)
230
-
231
- ```
232
-
233
-
234
-
235
- flask_admin/contrib/peewee/form.pyはさらに/Users/○○○/.pyenv/versions/3.6.4/lib/python3.6/site-packages/peewee.pyのBaseModelをimportしようとしているようですが、peewee.pyにはBaseModelメンバはありません。(BaseModel以外のメンバは全てありました)
236
-
237
-
238
-
239
- この時点で頭が?なのですが、どなたか原因と解決法を教えていただけますでしょうか。
240
-
241
-
242
-
243
- 進めていた本にはモジュールのインストール場所を特に指定することもなく、とりあえずいろいろとインストールしていたので、それの影響かもしれません。
244
-
245
-
246
-
247
- それではどうぞ宜しくお願いいたします。
1
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa