問題タブ [pyd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python への pyd のインポート (ModuleNotFoundError)
私はpybind11でバインディングを書いたこのC++ライブラリを持っており、それをcmakeで構築しています。
Linux では .so ファイルを取得し、問題なくインポートできます。
そして、同じフォルダーでpythonを開くと、問題なくインポートできますimport mylib
Windowsでは、MinGW-w64-x86_64-cmakeを使用してMSYS 64ビット経由でビルドしています
cmake -A x64 ..
(build
プロジェクトルートが上のフォルダーであるフォルダー内-> ..
)
次に、ビルドするために実行しますcmake --build . --config Release
(Visual Studio 15 2017ビルドファイル)
「Release」フォルダが生成され、その中に 3 つのファイルがあります。
(MSYS と PowerShell の両方で) Python を開くと、インポートできませんmylib
mylib.cp39-win_amd64.pyd
また、名前をに変更しようとしましmylib.pyd
たが、これは役に立ちませんが、エラーを変更します
スタックオーバーフローに関する他の同様の問題を見てきましたが、ここで私を助けることができるものはありませんでした。
python - Python モジュール 'scm' には属性 'Open' がありません
「scm.pyd」というサードパーティの pyd ファイルがあります。このファイルと DLL ファイルを PYTHONPATH に追加しました。
import scm -> works
scm.Open() -> 「module 'scm' has no attribute 'Open'」エラーを出力します。
Open() という関数があると思います。ctypesで scm の DLL バージョンを使用すると、Open() 関数が機能します。
関数プロトタイプはすぐに使用でき、Python 構文があるため、pyd ファイルを使用したいと考えています。
これを解決するには?
python - cython に変換された pyd ファイルのパス
「pyd」のパスは、使用する「py」ファイルと同じフォルダにある必要がありますか? または、Python パッケージが配置されているフォルダーにある必要がありますか? 例) C:\ProgramData\Anaconda3\envs\pcap\Lib\site-packages
python-3.x - Nuitka: PYD の .py および .exe への統合
PySimpleGUI、Matplotlib などを使用するアプリがあります (これらをまとめて「モジュール」と呼びます)。
( 1 ) 実行可能ファイル (app.exe) に対して、これまで以上に優れた保護を使用したいと考えています (VMProtect は他のいくつかのリストに含まれています)。これを実現するために、Nuitka を使用して app.py コードを C++ に変換し、mingw64 を使用して実行可能ファイルにコンパイルします。
python -m nuitka --standalone --nofollow-imports --plugin-enable=tk-inter --plugin-enable=numpy --plugin-enable=pylint-warnings --mingw64 --output-dir=X: app.py
( 2 ) また、モジュール (= Modules.py ) を *.pyd ファイル (= Modules.pyd )に変換したいと考えています。また、Nuitka を使用して Modules.py を Modules.pyd に変換します。例えば:
python -m nuitka --module "c:\Program Files\Python\Lib\site-packages\PySimpleGUI\PySimpleGUI.py"
( 3 ) app.exe は、まとめて配布される Modules.pyd を参照するものとします。
私の問題は、app.py コードで Modules.pyd を参照しようとしているときです。これは次のとおりです。
import PySimpleGUI.pyd as sg # PySimpleGUI.pyd is located in the same folder as app.py
次のエラーが表示されます。
ModuleNotFoundError: No module named 'PySimpleGUI.pyd'; 'PySimpleGUI' is not a package
この問題の解決策を見つけることができませんでした。
実際には、次のいずれかを達成したいと考えています。
(i)app.py(app.exeも意味する)にModules.pydを認識させます(後者はすでに持っています)
(ii) app.exe (NB: 保護の準備完了) と Modules.pyd を他の変換/コンパイル プロセスで受け取る別の方法を見つけます。
私が持ちたくないのは、同じディレクトリにある app.exe と多数の Modules.py です。
(i) または (ii) のいずれかを達成する方法についてのアドバイスをいただければ幸いです。
PS: すべてのソフトウェアとモジュールは最新で、すべてのパスが設定されています。
更新 (2021-09-20):
さらに調査した結果、[部分的な] 解決策と思われるものを見つけることができました。app.py のインポートの上に次の行を追加すると、(Nuitka 経由で変換された後) app.exe が Modules.pyd を認識するようになりました。
ただし、そのようなファイルが存在しないため、dateutil.relativedelta を適切な *.pyd に変換できません。
これは、module.class から *.pyd ファイルを作成するように Nuitka を構成する方法の問題になりつつあります。
誰かがこれに対する解決策を持っている場合は、応答してください。
python - .pyd ファイルは C++ プロジェクトからどのように作成されますか?
私の現在の目標は、このリポジトリCV-camera-finderを Python 3.10 と互換性を持たせることです。README ファイルでは、元の発行者は次のように述べています。
メディアファンデーションで接続カメラ一覧を探すシンプルな機能。これは、Python で使用するためにhttps://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/multimedia/mediafoundation/MFCaptureToFileにあるサンプルのコードを変更しただけです。
pymf.pyd(32-bit -> フォルダー 32 内のファイル、64-bit -> ...) を PYTHONPATH にダウンロードして使用します。変更する場合は、cpp ファイルを編集して再構築します。
Python に関する私の知識はせいぜい中級者であり、C++ の初心者です。Visual Studio 2022 をダウンロードし、自分で再構築しようとしましたが、成功しませんでした。彼の cap.cpp ファイルと pymf.cpp ファイル、および参照されているメディア ファンデーション サンプルの capture.h ファイルを使用しました。Python.h のインクルードを 3.10 のインクルード フォルダーにあるものに向けると、問題が解決すると仮定しました。
複数の問題に遭遇しました。最初の存在
3.10 libs フォルダーを指す追加のライブラリ依存関係を追加しました。それを行った後、ここに私が今得ているエラーがあります。
私は明らかにこれで頭がいっぱいですが、Python 3.10でこれを機能させたいと思っています。これを構築して.pydにするための手順/アドバイス/チュートリアル/などを誰かが提供できますか?