はい、これは繰り返し起こる質問であることは知っていますが、納得のいく答えが見つかりませんでした。私も https://chrisyeh96.github.io/2017/08/08/definitive-guide-python-imports.html を読みましたが、問題を解決する方法を見つけることができませんでした:
python 3.6 jupyter(ipython)ノートブックを含むプロジェクト。ノートブックにカスタムローカルhelpers.py
おそらく他のソースでも後で使用するパッケージ。
プロジェクトの構造は次のようになります。
my_project/
│
├── my_project/
│ ├── notebooks/
│ └── a_notebook.ipynb
│ ├── __init__.py # suppose to make package `my_project` importable
│ └── helpers.py
│
├── tests/
│ └── helpers_tests.py
│
├── .gitignore
├── LICENSE
├── README.md
├── requirements.txt
└── setup.py
ノートブックにhelpers
をインポートすると、次のエラーが表示されます。
----> 4 import helpers
ModuleNotFoundError: No module named 'helpers'
私も試してみましたfrom my_project import helpers
と同じエラーが発生しますModuleNotFoundError: No module named 'my_project'
私はついに(そして一時的に)通常のトリックを使いました:
import sys
sys.path.append('..')
import helpers
しかし、それはひどく見え、私はまだより良い解決策を探しています
pythonにsys.path
経由でモジュールを探す場所を伝えることができます。私はこのようなプロジェクト構造を持っています:
project/
│
├── src/
│ └── my_module/
│ ├── __init__.py
│ └── helpers.py
├── notebooks/
│ └── a_notebook.ipynb
...
次のようにモジュールをロードできました。
import sys
sys.path.append('../src/')
from my_module import helpers
どこにいてもモジュールをロードできるはずです。
notebooks
ディレクトリを1レベル外に移動し、パッケージからモジュールを明示的にインポートする場合は、それを行う必要があります。したがって、ディレクトリは次のようになります。
my_project/
│
├── my_project/
│ ├── __init__.py
│ └── helpers.py
├── notebooks/
│ └── a_notebook.ipynb
...
そして、ノートブック内のインポート文は次のようになります。
from my_project import helpers
。
__init__.py
ディレクトリにnotebooks/
モジュールが必要だと思います。 Jupyterノートブックを実際に使用したことがないので、間違っている可能性があります。インポートステートメントを次のように変更する必要がある場合もあります。
import .. helpers
importステートメントがJupyterノートブックの親ディレクトリにあるローカルパッケージ用であることを示します。
ここでいくつかの解決策を見つけることができました。それらのいくつかは前に答えたものに似ています: https://mg.readthedocs.io/importing-local-python-modules-from-jupyter-notebooks/index.html
次の行を試してください。
from my_project.helpers import what_you_need
この行も機能するはずです:
import my_project.helpers