1

実行時に拡張モジュールを作成する thanos を使用しようとしています。Thanos は、実行時に作成した拡張機能をインポートできないため、常に失敗しています。

どうしてこうなったのか不思議です。

実行時(コンパイル後)、「cutils_ext」ディレクトリには次が含まれますcutils_ext.so

import cutils_ext動作しますが、import cutils_ext.cutils_ext失敗します

ImportError: No module named cutils_ext

私は直接 with imp でテストしました。cutils がインポートされた cutils_ext パッケージであるとします。私がする時:

imp.find_module('cutils_ext', cutils.__path__)

私は再び得る:

ImportError: No module named cutils_ext

私は完全に困惑しています。これをデバッグする方法はありますか? (picloudを使用して)Pythonインタープリターを起動できないため、詳細モードでPythonを実行できませんが、実行時に詳細を有効にできれば役立ちます(その方法がわかりませんでした)。

4

1 に答える 1

2

試していただけますか:

import cutils_ext
import cutils_ext.cutils_ext

理由はわかりませんが、サブモジュールをインポートするためにモジュールをインポートする必要がある場合もあります。

それとも、たぶん、最初の cutils_ext に 2 番目の cutils_ext がまったく存在しないのでしょうか?

編集: ちょっと待って.. フォルダ構造と PYTHONPATH の内容を投稿していただけますか?

次のようなものがあると思います:

upper_folder (a folder)
    cutils_ext (folder)
        __init__.py (file)
        cutils_ext.so (obviously file)

PYTHONPATH がupper_folderを指している場合、投稿した内容を実行できるはずです。この状況が発生した場合、__ init __.pyがそこにある必要があることに注意してください。

ただし、PYTHONPATH が cutils_ext フォルダーを直接指している場合、ファイルをインポートすることしかできないと思われるため、cutils_ext.cutils_ext はインタープリターにとって意味がありません (cutils_ext.so に cutils_ext という変数がある場合を除きます...)

于 2012-06-29T10:12:34.503 に答える