7

私は自分のアプリケーションにPythonを埋め込もうとしていますが、かなり早い段階で立ち往生しています。

PythonをC++アプリケーションに埋め込み、このチュートリアルにあるコードを使用しています:http: //docs.python.org/2/extending/embedding.html#pure-embedding

私のアプリケーションは完全に一致し、エラーなしで正常にコンパイルされます。ただし、アプリケーションpModule = PyImport_Import(pName);行を実行すると0が返されません。これは、PyErr_Print()からエラー出力が表示されることを意味します。

Failed to load "C:\Users\workspace\dpllib\pyscript.py"
ImportError: Import by filename is not supported.

アプリケーションはコマンドで呼び出されていますC:\Users\workspace\ndnlib\pyscript.py multiply 50 150

4

2 に答える 2

7

よくわかりませんが、pNameがargv [1]に設定されていて、フルパスを使用してスクリプトを呼び出しているため、argv[1]がフルパスであると考えています。これは、コードが「C:\ Users \ワークスペース\dpllib\ pyscript.py」をインポートしようとすることを意味しますが、Pythonはインポートできません(「pyscript」のみをインポートできます)。

ディレクトリ内から「pyscript.py」と入力してスクリプトを実行し、エラーが「Failedtoload"pyscript.py"」に変わるかどうかを確認してください。含まれている場合は、argv [1]をインポートするだけでなく、ファイル名ではなくモジュール名を取得するように文字列を変更するように修正する必要があります。

于 2013-01-22T19:00:22.513 に答える
0

ファイルをモジュールとして作成すると、より簡単になります。

例えば、

これを作成します:

<project>/MyModule/__init__.py

次に、ファイルを実行します<project>/script.py

dyn_module_name = (... get module name 'MyModule' from console arguments ...)
my_dynamic_module = __import__(dyn_module_name)

モジュールになるため、scripy.pyの実行中にロードされます

于 2016-07-11T14:54:29.563 に答える