質問編集履歴

1

質問内容を記載させて頂きました。また改めて見直し無駄な文章を削除致しました。

2022/10/03 07:25

投稿

TAK0811
TAK0811

score2

test CHANGED
File without changes
test CHANGED
@@ -5,9 +5,9 @@
5
5
  Pyrhon:3.9.13
6
6
 
7
7
  ### 実現したいこと
8
- views.pyにベタ書きSDK用いたメッセージのコード(プッシュメッセージ・リッチメニュー)を別途作成したutils ディレクトリ 内create_screen.py に移しコードを分離して管理したいが、cannot import のエラーが発生する。
8
+ views.pyにて記載def sendMessage()を別途作成したutilsディレクトリ内create_screen.py に移したいが、cannot import のエラーが発生する。
9
9
 
10
- 初学者のため不慣れな点多々あるかと存じますが、どうぞ宜しくお願致します。
10
+ エラーコードを解消するため、どのよに書き換えれば良かご教示頂けますと幸いです
11
11
 
12
12
  ### 発生している問題・エラーメッセージ
13
13
 
@@ -29,7 +29,7 @@
29
29
  from linebot.models import MessageEvent, TextMessage
30
30
  from dotenv import load_dotenv
31
31
 
32
- from utils.create_screen import * #carouselTemplate
32
+ from utils.create_screen import carouselTemplate
33
33
 
34
34
  load_dotenv()
35
35
 
@@ -52,6 +52,12 @@
52
52
  event.reply_token,
53
53
  messages = carouselTemplate()
54
54
  )
55
+
56
+ #以下の関数をこちらの配置で実行するとエラーは発生しないが、create_screen.pyに移動させるとエラーが発生します。
57
+ def sendMessage():
58
+ line_bot_api.broadcast(TextSendMessage(text='Hello World!'))
59
+ sendMessage()
60
+
55
61
  ```
56
62
 
57
63
  ```ここに言語を入力
@@ -60,26 +66,18 @@
60
66
  from linebot.models import TextSendMessage
61
67
  from bot.views import line_bot_api
62
68
 
69
+ #上記view.pyに記述していたsendMessage()関数をここに移行しエラーなく実行させたいがImportErrorが発生。
63
70
  def sendMessage():
64
71
  line_bot_api.broadcast(TextSendMessage(text='Hello World!'))
65
72
  sendMessage()
66
73
  ```
67
74
 
68
75
  ### 試したこと
69
- 以下理由が原因と考え、調査したURLの【解決策2】を参考にviews.py import 部分書き換えするも変わらず
76
+ エラーメッセージ most likely due to a circular import から以下試しましたが変わりませんでした
70
- from utils.create_screen import ~~carouselTemplate~~ → * 
77
+  from utils.create_screen import ~~carouselTemplate~~ → * 
71
78
  (反対にcreate_screen.py の import ~~line_bot_api~~ → * )
79
+ 参考元:https://www.kthksgy.com/python/python-circular-dependency/
72
80
  ※【解決策1】は勉強不足により、本課題に置き換えられず現状試せておりません。
73
- https://www.kthksgy.com/python/python-circular-dependency/
74
81
 
75
- 循環インポートが原因かと想定りますが、そもそもの循環インポートの認識誤っておりまたらご指摘いただけますと幸いです
82
+ 何卒よろ願い致します。
76
- → views. py は create_screen.py より (自作の)carouselTemplate 関数をimport している
77
-  対し、create_screen.py は [views.py](http://views.py) から 変数 line_bot_api を呼び出そうとしているため相互間のインポート(循環インポート)が発生している?
78
- ※ line_bot_api : sendMessage関数内に組み込む予定の変数
79
83
 
80
- https://startlab.jp/learning-python/module-error/
81
- こちらの記事を見ると、views自体は自作モジュールではなく、かつファイル名と変数名が同じではないため以下参考の症状とは異なると思われる。
82
-
83
- https://ja.stackoverflow.com/questions/77522/cannot-import-name-xxx-from-partially-initialized-moduleの発生条件
84
- こちらは解釈ができず、現在試せておりません。
85
-