私はPython拡張モジュールをCで書いています。このCコードでは、標準のPythonモジュールの1つ、たとえばos
またはshutil
を使います。これを行うにはどのように最善ですか?標準のPythonモジュールをPython C内からインポートして使用する
4
A
答えて
7
PyObject* os = PyImport_ImportModuleNoBlock("os");
if (os == NULL)
return NULL;
someattr = PyObject_GetAttrString(os, "someattr");
Py_DECREF(os);
あなたがPyImport_ImportModule("os")
を使用し、その後init_yourmodule()
機能では、一度だけ、例えばモジュールをインポートする場合。
1
しないでください。
代わりに、拡張モジュールをPythonにサービスを提供するように変更してから、os
、shutil
およびモジュールを呼び出すPythonコードを記述します。
実際、os
モジュールの多くのコンテンツでは、Pythonに呼び出すのではなく、ネイティブのCコードを記述する方がよいでしょう。
もちろん、それはos
とshutil
のような低レベルのモジュールでは過度のことです。ファイルに関しては、shutil
のコピー方法をCコードで再実装するのは簡単です。実際、Windowsでは、ファイルをコピーすることはOSの呼び出しによって行われるため、C言語で書かれるコードはあまりありません。
PythonモジュールがC言語で書かれていると、あなたが必要とする方法。
関連する問題
- 1. Jythonを使用した標準PythonモジュールのImportError(JARファイル内)
- 2. Python標準ライブラリ全体をインポートする
- 3. Python C Extensionをビルドしてモジュールからインポートする方法
- 4. 非標準モジュールでPythonファイルを共有していますか?
- 5. Python MixInの標準
- 6. python標準ライブラリ
- 7. mod_wsgi pythonは標準ライブラリからインポートできません
- 8. appengine標準環境でgoogle-cloud-storageモジュールをインポートして使用する
- 9. ファイルからPythonモジュールをインポートする
- 10. モジュールをPython標準ライブラリからローカルディレクトリにインストールする標準的な方法は何ですか?
- 11. 非標準Pythonインストールの使用
- 12. python -c '...'のローカルPythonモジュールを使用
- 13. Python MySQLの標準
- 14. Pythonで標準モジュールでWebソケット(wss)に接続しますか?
- 15. インポートされたモジュールから標準ライブラリを呼び出す
- 16. importlib.import_moduleを使用してPythonでモジュールをインポートする方法
- 17. Python C APIでstringからモジュールをインポートする
- 18. 異なるフォルダからPythonモジュールをインポート
- 19. Pythonコードスタイル/標準を適用するツール
- 20. Python:すべてのモジュールをフォルダからインポートしますか?
- 21. Python C APIは、標準のPythonインタプリタの代わりにWinPython Pythonインタプリタを使用します
- 22. 幾何学的点をエミュレートするためのPython標準モジュール
- 23. Pythonでのモジュールのインポートと使用
- 24. Python:他のモジュールからリストをインポート
- 25. mod_pythonを使用しているときにPythonモジュールをインポート
- 26. Pythonの標準ライブラリでオーバーライドメソッド
- 27. Python標準ライブラリのみを使用したHTMLからテキストへの変換
- 28. Pythonを使用してCSVからピクセル座標をプロットする
- 29. Pythonのシステム標準サウンド
- 30. Pythonクラス内でのモジュールのインポート
複雑な拡張モジュールは、stdlibで既に実装されているものを行う必要があることがあります。 C言語で再実装したり、コードを再構築するのは残念です – zaharpopov