Python3.11.2にcプログラムを埋め込んでいます。埋め込み Python から Python スクリプトを呼び出すと (サードパーティ モジュールと標準ライブラリ モジュールをインポートする)、次のエラーが発生します:
リーリー通常の (非埋め込み) Python からスクリプトを実行すると、すべてが正常に動作し、abc モジュールのファイル属性も見つけることができます。
次の構成を使用してソースから python3.11.2 をコンパイルしました。 --enable-optimizations --enable-shared --prefix="path/to/my/custom/build/folder/
奇妙なことに、スクリプトがインポートするすべてのサードパーティ モジュールには file 属性があり、正常に読み込まれます。
これの原因について何か洞察を持っている人はいますか?
私のオペレーティング システム: ubuntu 22.04.3
os などの他の標準ライブラリ モジュールをテストしました。組み込み Python から OS 内の関数を呼び出すと、正常に動作しますが、OS の file 属性が見つかりません。非埋め込み Python からこれを実行すると、file 属性が見つかります。
更新: 埋め込まれた Python に空のプレフィックスがあることを発見しました。このプレフィックスを変更するにはどうすればよいですか? pythonhomeを設定しても何も変わりません。
モジュールの file 属性を手動で追加することで解決策を見つけました。 file プロパティがデフォルトで設定されない理由はまだわかりませんが、現在はこれでうまくいきます。
以上がC++ に Python を埋め込むときの AttributeError (Ubuntu)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。