私はcythonでいくつかのコードを書いていますが、私はいくつかの"Packages “within” modules"を持っています。 —これは実際にそこに私の質問へのフォローアップであり、構造は同じでなければなりません。問題はこれがcythonだから、私は.so
が.py
のものではないと扱っています。__init__.so(__init__.pyの代わりに)はサブパッケージをマスクします
import mystuff
が動作する、という程度に__init__.so
作品を持つが、以下のすべてのサブパッケージを隠すように思われます。つまり、
import mystuff.test.test1
はありません。 ImportError: No module named ...
エラーが発生します。
どうすれば対処できますか? .c
にコンパイルする前に.pyx
に追加する必要があるものはありますか?または、おそらく__init__.so
の名前を何かに変更して、何とかそれを__init__.py
にプルすることができます(__init__.py
はまだパッケージを示すために.so
と一緒に存在する必要があります)。または、他の何か。
更新:__path__
属性.so
パッケージに定義されていない...
は[OK]を、私は多分、私はパッケージの__path__
属性を操作することによって、これを回避することができると考えていました。興味深いことに、これは.py
パッケージに対して定義されていますが、.so
でエラーが発生します。それは解決策ではありませんが、問題の根源かどうかは疑問です。
私はそれを別のファイルに入れて '__init __。py'からインポートすることを考えましたが、同じことをするためにインポートできる2つのモジュールで私のパッケージを汚染することを心配していました。私は "実際の"モジュールの名前に '.'を置いてそれを止めることを考えましたが、もちろん' __init __。py'からimportするのを止めるでしょう!私は複雑なソリューションを探すのに忙しくなりました。おそらく、単純な解決策が最適です。ありがとうございました。 – tjm