Pythonモジュールをファイルからインポートするのは、Python C APIのpyImport_Import()
で比較的簡単ですが、文字列に格納された関数を使用する必要があります。文字列からPythonモジュールをインポートする方法はありますか(明確にする:ファイルはありません;コードは文字列内にあります)、または文字列を一時ファイルとして保存する必要がありますか?Python C APIでstringからモジュールをインポートする
2
A
答えて
1
私の理解が正しい場合は、const char* name
にインポートするモジュールを指定するPyImport_ImportModule
を使用できます。
私の理解が間違っていましたので:
一般的には、文字列を持っていると私はを推測したもので作業したい場合は、PyRun_File
でそれらを実行するが、その後.py
ファイルに内容をダンプして方が良いでしょうPy_CompileString
を使用してコードオブジェクトにコンパイルし、評価のためにPyEval_EvalCode
に供給することができます。
1
一時ファイルを使用する必要はありません。これは、実際の商用アプリケーションから取得したコードは(私は少しエラー処理や他の非必要な詳細情報を除去することによって、それを変更した)され
const char *MyModuleName = "blah";
const char *MyModuleCode = "print 'Hello world!'";
PyObject *pyModule = PyModule_New(MyModuleName);
// Set properties on the new module object
PyModule_AddStringConstant(pyModule, "__file__", "");
PyObject *localDict = PyModule_GetDict(pyModule); // Returns a borrowed reference: no need to Py_DECREF() it once we are done
PyObject *builtins = PyEval_GetBuiltins(); // Returns a borrowed reference: no need to Py_DECREF() it once we are done
PyDict_SetItemString(localDict, "__builtins__", builtins);
// Define code in the newly created module
PyObject *pyValue = PyRun_String(MyModuleCode, Py_file_input, localDict, localDict);
if (pyValue == NULL) {
// Handle error
}
else
Py_DECREF(pyValue);
:このコードを使用します。 希望のモジュール名をMyModuleName
に設定し、PythonコードをMyModuleCode
に設定するだけです。
関連する問題
- 1. python "string"モジュールですか?
- 2. ファイルからPythonモジュールをインポートする
- 3. Python C Extensionをビルドしてモジュールからインポートする方法
- 4. 異なるフォルダからPythonモジュールをインポート
- 5. 標準のPythonモジュールをPython C内からインポートして使用する
- 6. Python:他のモジュールからリストをインポート
- 7. Cythonで生成されたモジュールをPythonからC/C++のメインファイルにインポートするには? (C/C++でのプログラミング)
- 8. PythonモジュールをLinux上でNTFS共有からインポートする
- 9. 別のフォルダからpythonでモジュールをインポートする
- 10. Python 3で別のディレクトリからモジュールをインポートするには?
- 11. Pythonモジュール(boost.python)からクラスをインポートするには?
- 12. .soファイルからpythonモジュールをインポートするには?
- 13. デスクトップからPythonモジュールをインポートする、経験の浅いプログラマー
- 14. モジュールから変数をインポート
- 15. モジュールにインポートされたモジュールから関数をインポートする
- 16. python newbie:eclipseでnumpyモジュールをインポートする
- 17. wxモジュールをPythonでインポートする
- 18. PythonでVlcモジュールをインポートする
- 19. Pythonでモジュールをインポートする際のセグメンテーションエラー
- 20. Python:相対パスで非Pythonファイルをロードするサブディレクトリからモジュールをインポート
- 21. JupyterのPythonノートブックからモジュールをインポートできません
- 22. dockerからpythonモジュールをインポートする方法
- 23. 親パッケージと兄弟パッケージからPythonモジュールをインポートする方法
- 24. python 2.7の兄弟ディレクトリからモジュールをインポートするには?
- 25. 他のディレクトリから複数のPythonモジュールをインポートする方法
- 26. ディレクトリからPythonのユーザ定義モジュールをインポートする
- 27. Pythonのサブフォルダからモジュールやファイルをインポートするには?
- 28. Pythonでモジュールをインポートすると、すべてのモジュールのインポートがローカルスコープで実行されますか?
- 29. Python:すべてのモジュールをフォルダからインポートしますか?
- 30. c#文字列からpowershellモジュールをインポートする方法
ファイルはありません。モジュールの内容は文字列に格納されます。 – Hullu2000
ええと、内容をファイルにダンプしてからインポートすることはできませんか?有効なPythonコードをexecする関数があると確信していますが、いくつかの例を追加できますか? –
私のアプリケーションには、ユーザーがPythonコードを入力して実行できるテキスト編集領域があります。コードを実行するために、プログラムは関数を呼び出して呼び出します。 – Hullu2000