teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

質問削除の取り消し

2018/02/07 08:11

投稿

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

1

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

2018/02/07 08:11

投稿

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