私は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 MixInの標準
- 5. mod_wsgi pythonは標準ライブラリからインポートできません
- 6. importlib.import_moduleを使用してPythonでモジュールをインポートする方法
- 7. 非標準Pythonインストールの使用
- 8. Pythonでのモジュールのインポートと使用
- 9. Python MySQLの標準
- 10. Python:すべてのモジュールをフォルダからインポートしますか?
- 11. モジュールをPython標準ライブラリからローカルディレクトリにインストールする標準的な方法は何ですか?
- 12. mod_pythonを使用しているときにPythonモジュールをインポート
- 13. Pythonコードスタイル/標準を適用するツール
- 14. 幾何学的点をエミュレートするためのPython標準モジュール
- 15. Pythonクラス内でのモジュールのインポート
- 16. インポートのpythonモジュールに
- 17. Pythonで変数を使用してモジュールをインポート
- 18. Pythonの標準ライブラリでオーバーライドメソッド
- 19. Python標準ライブラリのみを使用したHTMLからテキストへの変換
- 20. Pythonのシステム標準サウンド
- 21. Pythonの:標準出力
- 22. 標準偏差を計算し、Python 2.7を使用してカーブフィットをプロットする
- 23. 標準ライブラリのみを使用したPythonでのビットマスク解析
- 24. セロリのPython標準ログを使用する
- 25. DJANGOでPython標準ライブラリを使用できますか?
- 26. 標準ライブラリを使用したPythonでのプライベート/パブリック暗号化
- 27. Python:標準関数とコンテキストマネージャ?
- 28. 標準アセンブリへのPythonプログラム?
- 29. Pythonモジュールをリリースするための標準パターンは何ですか?
- 30. pythonモジュールのインポートの質問
複雑な拡張モジュールは、stdlibで既に実装されているものを行う必要があることがあります。 C言語で再実装したり、コードを再構築するのは残念です – zaharpopov