次のようなディレクトリ構造があります
meta_project
    project1
        __init__.py
        lib
            module.py
            __init__.py
    notebook_folder
        notebook.jpynbnotebook.jpynb相対インポートを使用して関数function()にアクセスしようとすると、次のように動作しますmodule.py:
from ..project1.lib.module import function次のエラーが発生します。
SystemError                               Traceback (most recent call last)
<ipython-input-7-6393744d93ab> in <module>()
----> 1 from ..project1.lib.module import function
SystemError: Parent module '' not loaded, cannot perform relative import相対インポートを使用してこれを機能させる方法はありますか?
ノートブックサーバーはmeta_projectディレクトリレベルでインスタンス化されるため、これらのファイルの情報にアクセスできる必要があります。
また、少なくとも当初意図project1されていたように、モジュールとは考えられなかったため、__init__.pyファイルがないことに注意してください。これは、ファイルシステムディレクトリとしてのみ意図されていました。問題の解決策として、それをモジュールとして扱い、__init__.pyファイル(空のファイルも含む)を含める必要がある場合は問題ありませんが、そうするだけでは問題を解決できません。
マシン間でこのディレクトリを共有し、相対インポートを使用すると、どこでも同じコードを使用できます。また、迅速なプロトタイピングのためにノートブックを使用することが多いため、絶対パスをハッキングすることを含む提案は役に立たない可能性があります。
編集:これはPython 3の相対インポートとは異なります。Python3は、一般的にはPython 3の相対インポートについて、特にパッケージディレクトリ内からスクリプトを実行することについて説明しています。これは、異なる一般的な側面と特定の側面の両方を持つ別のディレクトリのローカルモジュールの関数を呼び出そうとするjupyterノートブック内での作業に関係しています。
libディレクトリにあります。
                
__init__パッケージディレクトリにファイルはありますか?