是的,我知道这是一个反复出现的问题,但我仍然找不到令人信服的答案。我甚至在https://chrisyeh96.github.io/2017/08/08/definitive-guide-python-imports.html上读过,但找不到解决问题的方法:
我正在运行python 3.6项目,其中包括jupyter(I python)笔记本。我希望笔记本导入一个自定义的本地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
但看起来很糟糕我还在寻找更好的解决方案
我认为您需要在
notebooks/
目录中有一个__init__.py
模块。我以前没用过笔记本,所以我可能错了。您可能还需要尝试将import语句更改为:指示import语句用于位于Jupyter笔记本的父目录中的本地包。
如果将
notebooks
目录移出一个级别,然后从包中显式导入模块,就应该这样做。所以你的目录如下:然后笔记本中的导入语句将是:
from my_project import helpers
。可以通过
sys.path
告诉python在哪里查找模块。我的项目结构如下:我可以像这样加载模块:
一个人应该能够从他们拥有的任何地方加载模块。
相关问题 更多 >
编程相关推荐