質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

965閲覧

pyinstall のImportErrorについて

ygr

総合スコア0

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/06/13 16:57

cv2でWebCamの映像を取得して、mediapipeで手の検出をしたデータをUnityに流すプログラムを書いて、Pyinstallerでexe化すると実行時エラーとして、2つ目のエラーが出ます。
試したこととしては、Pyinstallerのオプションとして--paths=cv2がある1つ前のフォルダ/cv2で指定しても、同様のエラーが発生しました。
よろしくお願いいたします。

python3

1import cv2 2import mediapipe as mp 3from email import message 4from asyncio.windows_events import NULL 5import socket 6import random 7import time 8import os 9import json 10import logging 11import datetime 12 13HOST = "127.0.0.1" 14MAINPORT = 50007 15 16connectunity = True 17 18landmark_line_ids = [] 19 20fh = logging.FileHandler("log.log") 21logger = logging.getLogger("Logging") 22logger.addHandler(fh) 23 24def ConnectUnity(): 25 if (connectunity == False): 26 return 27 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 28 result = str(os.getpid()) 29 print(os.getpid()) 30 client.connect((HOST, MAINPORT)) 31 client.send(result.encode("utf-8")) 32 33 data = client.recv(200) 34 print(data.decode("utf-8")) 35 return client 36 37def init_mp(): 38 global landmark_line_ids 39 40 mp_hands = mp.solutions.hands 41 hands = mp_hands.Hands( 42 max_num_hands = 1, #最大検出数 43 min_ditection_confidence = 0.7, #検出信頼度 44 min_tracking_confidence = 0.7 #追跡信頼度 45 ) 46 47 # landmarkの繋がり表示用 48 landmark_line_ids = [ 49 (0, 1), (1, 5), (5, 9), (9, 13), (13, 17), (17, 0), # 掌 50 (1, 2), (2, 3), (3, 4), # 親指 51 (5, 6), (6, 7), (7, 8), # 人差し指 52 (9, 10), (10, 11), (11, 12), # 中指 53 (13, 14), (14, 15), (15, 16), # 薬指 54 (17, 18), (18, 19), (19, 20), # 小指 55] 56 cap = cv2.VideoCapture(0) 57 return hands, cap 58 59def GetHands(hands, cap): 60 global landmark_line_ids 61 62 if cap.isOpened(): 63 success, img = cap.read() 64 if not success: 65 sendlog(30, "cap.read() is fail") 66 return NULL 67 68 img = cv2.flip(img, 1) #画像の左右を反転 69 img_h, img_w, _ = img.shape 70 71 Res = NULL 72 #検出処理 73 results = hands.process(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) 74 if results.multi_hand_world_landmarks: 75 Res = make_hand_landmarks_json(results.multimulti_hand_world_landmarks[0], img_h, img_w) 76 77 else: 78 sendlog(30, "cap.isOpened is false") 79 return Res 80 81def make_hand_landmarks_json(hand_landmarks, img_h, img_w): 82 res = [] 83 index = 0 84 for lm in (hand_landmarks.landmark): 85 data_p = {} 86 data = {} 87 88 data_p["x"] = lm.x * img_w 89 data_p["y"] = lm.y * img_h 90 data_p["z"] = lm.z 91 data["Index"] = index 92 data["Point"] = data_p 93 94 res.append(data) 95 index += 1 96 return res 97 98def main(): 99 client = ConnectUnity() 100 101 hands, cap = init_mp() 102 try: 103 while True: 104 data = GetHands(hands, cap) 105 json_data = json.dumps(data) 106 if(connectunity == True): 107 client.send(json_data.encode("utf-8")) 108 time.sleep(0.5) 109 110 except ConnectionAbortedError: 111 print("Connection Aborte") 112 finally: 113 cap.releace() 114 115def sendlog(num, string): 116 now = str(datetime.datetime.now(datetime.timezone.utc)) 117 logger.log(num, now + ">" + string) 118 119if __name__ == "__main__": 120 main()
['C:\\Users\\shini\\AppData\\Local\\Temp\\_MEI225522\\base_library.zip', 'C:\\Users\\shini\\AppData\\Local\\Temp\\_MEI225522\\cv2', 'C:\\Users\\shini\\AppData\\Local\\Temp\\_MEI225522\\lib-dynload', 'C:\\Users\\shini\\AppData\\Local\\Temp\\_MEI225522'] Traceback (most recent call last): File "sample3.py", line 1, in <module> File "C:\Users\shini\AppData\Local\Temp\_MEI225522\cv2\__init__.py", line 181, in <module> bootstrap() File "C:\Users\shini\AppData\Local\Temp\_MEI225522\cv2\__init__.py", line 153, in bootstrap native_module = importlib.import_module("cv2") File "importlib\__init__.py", line 127, in import_module applySysPathWorkaround = True File "C:\Users\shini\AppData\Local\Temp\_MEI225522\cv2\__init__.py", line 181, in <module> bootstrap() File "C:\Users\shini\AppData\Local\Temp\_MEI225522\cv2\__init__.py", line 76, in bootstrap raise ImportError('ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.') ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation. [37256] Failed to execute script 'sample3' due to unhandled exception!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問