実現したいこと
Pythonコードの実行をしたいです。何回やってもエラーが出るので、その先に進めません。
発生している問題・分からないこと
Pythonは正しくインストール済みで、仮想環境を有効にして次に実行で何回もエラーが出てしまいます。
エラーメッセージ
error
1FileNotFoundError: Could not find module 'C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\libzbar-64.dll' (or one of its dependencies). Try using the full path with constructor syntax. 2このエラーメッセージは、Pythonプログラムが libzbar-64.dll というファイルを見つけられないことを示しています。このファイルは pyzbar ライブラリの一部で、バーコードやQRコードの読み取りに使用されます。
該当のソースコード
(my_project_env) PS C:\Users\sayu2\my_project>python C:\Users\sayu2\my_project\your_script.py
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Copiotにきいてやれることはやりましたがエラーが出ます
補足
試したこと
①環境変数の編集で見つけやすくするため新規に入れましたC:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar;
②ライブラリのアンインストール:pip uninstall pyzbar
③ライブラリの再インストール:pip install pyzbar
ちなみに libzbar-64.dll というファイルはフォルダーにちゃんとあります。
「なにをした時に」エラーになったのですか? import pyzbar.pyzbar とかでしょうか
Traceback の前部分を省略していますか? 全文載せた方がいいです
そこに libiconv.dll もありますか?
返答ありがとうございます。初めて質問投稿したので分かりやすく投稿出来ていないですね。
(my_project_env) PS C:\Users\sayu2\my_project>python
↑のコードを入力して↓のコードを入力するとエラーが出ます。
C:\Users\sayu2\my_project\your_script.py
Pythonプログラムが libzbar-64.dll というファイルを見つけられないと表示されます。
でもフォルダーにlibzbar-64.dll はあります。libiconv.dll も同じ場所にあります。
どうしてでしょうか、、、。何でエラーが出るか分かりません。よろしくお願いいたします。
pyzbar の GitHub リポジトリに置かれている README に以下の記載があります。(vcredist_x64.exe か vcredist_x86.exe をインストールする必要があるそうです)
Windows error message
https://github.com/NaturalHistoryMuseum/pyzbar#windows-error-message
> If you see an ugly ImportError when importing pyzbar on Windows you will most likely need the Visual C++ Redistributable Packages for Visual Studio 2013. Install vcredist_x64.exe if using 64-bit Python, vcredist_x86.exe if using 32-bit Python.
「Pythonプログラムが libzbar-64.dll というファイルを見つけられない」という文字がシェルに出力されるのですか?
https://teratail.com/help/question-tips#questionTips34
> 表示されたエラーメッセージをそのままコピー&ペーストしましょう。自分でタイプしなおしたり、自分で解釈・要約しようとしてはいけません。
返答ありがとうございます。インストールやってみます。
この質問文には java や php は出てこないので タグ付けは python だけでいいのではないでしょうか?
quickquipさん
返答ありがとうございます
FileNotFoundError: Could not find module 'C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\libzbar-64.dll' (or one of its dependencies). Try using the full path with constructor syntax.
このエラーメッセージは、Pythonプログラムが libzbar-64.dll というファイルを見つけられないことを示しています。このファイルは pyzbar ライブラリの一部で、バーコードやQRコードの読み取りに使用されます。
このようなエラーが出てきます。
junerさん
確かにそうですね。タグ付けは python だけでいいです。
指摘ありがとうございます。
> Pythonは正しくインストール済みで、仮想環境を有効にして
仮想環境はどのツールを使われていますか?
> (my_project_env) PS C:\Users\sayu2\my_project>python
> ↑のコードを入力して↓のコードを入力するとエラーが出ます。
> C:\Users\sayu2\my_project\your_script.py
your_script.pyの内容は何ですか?
OSはWindowsですよね?pipで入れたなら必要なDLLも一緒にインストールされるはずですが、インストール時は問題なくインストール成功されたんですよね? 環境構築からやり直した方が早い場合もあるかもしれません。
想像だと、発生したエラーの詳細(Traceback)を見えないようにして分かりやすいが原因を調査したり質問したりしようとすると混乱を招く日本語のメッセージに置き換える、みたいなことを your_script.py がやっているんだろうな、と思いました
Windows10ですか?
meg_さん
返答ありがとうございます
仮想環境はどのツールを使われていますか?venvのツールです。
> (my_project_env) PS C:\Users\sayu2\my_project>python
> ↑のコードを入力して↓のコードを入力するとエラーが出ます。
> C:\Users\sayu2\my_project\your_script.py
your_script.pyの内容は何ですか?
↓こちらがプログラム内容です。
import cv2
import numpy as np
from pyzbar.pyzbar import decode
import csv
import os
import ctypes
os.add_dll_directory(r"C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar")
ctypes.CDLL(r'C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\libzbar-64.dll')
def read_qr_code_from_camera():
cap = cv2.VideoCapture(0)
data_list = []
while True:
ret, frame = cap.read()
if not ret:
print("カメラの映像を取得できませんでした")
break
for barcode in decode(frame):
barcode_data = barcode.data.decode('utf-8')
print(f"QRコードデータ: {barcode_data}")
data_list.append(barcode_data)
# QRコードを読み取った後にループを終了
cap.release()
cv2.destroyAllWindows()
save_to_csv(data_list) # ここでCSVに保存する
return
cv2.imshow('QRコード読み取り', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
def save_to_csv(data_list):
with open('qr_data.csv', mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(["QRコードデータ"])
for data in data_list:
writer.writerow([data])
print("データがqr_data.csvに保存されました")
if __name__ == "__main__":
read_qr_code_from_camera()
print("現在の作業ディレクトリ:", os.getcwd())
OSはWindowsですよね?はい、そうです。
pipで入れたなら必要なDLLも一緒にインストールされるはずですが、
インストール時は問題なくインストール成功されたんですよね? はい、確認済みです。
環境構築からやり直した方が早い場合もあるかもしれません。
はい、そうかもしれませんね、、、。
ありがとうございます。
FileNotFoundError の上に
Traceback (most recent call list)
File "(略)your_script.py", line (略), in in <module>
ctypes.CDLL(略)
とか出てませんか?
補足すると、3年前に同様の問題が issues に報告されています。
FileNotFoundError: Could not find module 'libzbar-64.dll' (or one of its dependencies). Try using the full path with constructor syntax. · Issue #93 · NaturalHistoryMuseum/pyzbar
https://github.com/NaturalHistoryMuseum/pyzbar/issues/93
こちらは今年1月に報告されている問題で、libzbar-64.dll ではなく libiconv.dll が見つからないというものです。
FileNotFoundError: Could not find module 'libiconv.dll' (or one of its dependencies). Try using the full path with constructor syntax. · Issue #161 · NaturalHistoryMuseum/pyzbar
https://github.com/NaturalHistoryMuseum/pyzbar/issues/161
どちらとも vcredist_x64.exe(もしくは vcredist_x86.exe)のインストールで問題が解決されたとの返信が付いています。(解決されない旨の返信も付いています)
なお、vcredist_x64.exe は以下からダウンロードできます。
Download Visual Studio 2013 の Visual C++ 再頒布可能パッケージ from Official Microsoft Download Center
https://www.microsoft.com/ja-jp/download/details.aspx?id=40784
os.add_dll_directory(r"C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar")
ctypes.CDLL(r'C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\libzbar-64.dll')
の2行は必要で入っているものですか? なんかうまく動かないからとりあえず試してみよう/確認してみよう、という感じで入っているものですか?
> from pyzbar.pyzbar import decode
上記コードがエラーの発生元でしょうか?それとも下記コードでしょうか?
> ctypes.CDLL(r'C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\libzbar-64.dll')
meg_さん
返答ありがとうございます
from pyzbar.pyzbar import decode
上記コードがエラーの発生元でしょうか?それとも下記コードでしょうか?
> ctypes.CDLL(r'C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\libzbar-64.dll')
from pyzbar.pyzbar import decode
このインポート文が実行される際に、pyzbarライブラリが内部でlibiconv.dllおよびlibzbar-64.dllを読み込もうとしますが、これらのファイルが見つからないためエラーが発生しています。
quickquipさん
返答ありがとうございます
Windows11です
FileNotFoundError の上に
↓がありました(毎回長いエラーが出るので見逃していました(/ω\))
Traceback (most recent call last):
File "C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\zbar_library.py", line 58, in load
dependencies, libzbar = load_objects(Path(''))
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\zbar_library.py", line 51, in load_objects
cdll.LoadLibrary(str(directory.joinpath(dep)))
File "C:\Users\sayu2\AppData\Local\Programs\Python\Python312\Lib\ctypes\__init__.py", line 460, in LoadLibrary
return self._dlltype(name)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\sayu2\AppData\Local\Programs\Python\Python312\Lib\ctypes\__init__.py", line 379, in __init__
self._handle = _dlopen(self._name, mode)
^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: Could not find module 'libiconv.dll' (or one of its dependencies). Try using the full path with constructor syntax.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\sayu2\my_project\your_script.py", line 3, in <module>
from pyzbar.pyzbar import decode
File "C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\pyzbar.py", line 7, in <module>
from .wrapper import (
File "C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\wrapper.py", line 151, in <module>
zbar_version = zbar_function(
^^^^^^^^^^^^^^
File "C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\wrapper.py", line 148, in zbar_function
return prototype((fname, load_libzbar()))
^^^^^^^^^^^^^^
File "C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\wrapper.py", line 127, in load_libzbar
libzbar, dependencies = zbar_library.load()
^^^^^^^^^^^^^^^^^^^
File "C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\zbar_library.py", line 60, in load
dependencies, libzbar = load_objects(Path(__file__).parent)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
quickquipさん
返答の続きです
os.add_dll_directory(r"C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar")
ctypes.CDLL(r'C:\Users\sayu2\my_project\my_project_env\Lib\site-packages\pyzbar\libzbar-64.dll')
の2行は必要で入っているものですか? なんかうまく動かないからとりあえず試してみよう/確認してみよう、という感じで入っているものですか?
はい、2行は異なる目的を持っていますが、どちらか一方で十分ですね。
os.add_dll_directory これでディレクトリ内のDLLファイルが自動的に見つかるようになるかな?とか
ctypes.CDLL 指定したDLLファイルを直接読み込み、色々試してました。
melianさん
返答ありがとうございます。
libzbar-64.dll 、 libiconv.dllの問題が色々報告されてるんですね、、、。
Visual C++ 再頒布可能パッケージ vcredist_x64.exe
インストールはしました。
インストールはしたけれど解決出来ませんでした。
再インストールをしてみようと思います。
melianさん
コメントありがとうございます。
Microsoft Visual C++ 2015-2022 x64 インストール済みでしたが
Microsoft Visual C++ 2013 x64 はインストールしていなかったためインストールしたら
問題が解決しました!
ありがとうございました。
