从 Jupyter Notebook 导入子文件夹文件
Import subfolder file from Jupyter Notebook
文件夹结构如下:
~/
+-- some_module/
| +-- subfolder/
| | +-- submodule.py
| +-- helpers.py
| +-- api.py
+-- notebook.ipynb
这是api.py
的内容:
from subfolder.submodule import submodule_fun
def print_something(string):
print(submodule_fun(string))
# ...
if __name__ == '__main__':
run()
和submodule.py
:
from helpers import helper_fun
def submodule_fun(string):
stuff = helper_fun(string)
return stuff
当从命令行 运行 python api.py
时,这工作得很好。 submodule.py
文件只是简单地使用了 helpers.py
中的一些函数,不需要戏剧化。
但是,我也希望能够使用住在 some_module
之外的 notebook.ipynb
的 submodule.py
。当我在此笔记本中添加以下行时:
from some_module.subfolder import submodule
我收到以下错误:
~/some_module/subfolder/submodule.py in <module>
---> from helpers import helper_fun
ModuleNotFoundError: No module named 'helpers'
我尝试使用 setuptools
将所有 some_module
打包到一个合适的模块中,但我 运行 遇到了奇怪的错误,显然是因为该模块不直接存在于存储库的根目录中.
在这种情况下,如果不诉诸打包 some_module
,是否有办法能够从 notebook.ipynb
访问 submodule.py
?
尝试通过 OS 或编程方式(如下所示)将 some_module
添加到您的 PATH 或 PYTHONPATH 环境变量
import sys
import os
abspath = r"c:\your\path\to\some_module"
sys.path.append(os.path.abspath(abspath ))
from some_module.subfolder import submodule
作为打包的替代方法,您可以使用 poetry
来管理您的依赖项、虚拟环境,它会将您的项目安装到环境中,而无需实际生成包。
文件夹结构如下:
~/
+-- some_module/
| +-- subfolder/
| | +-- submodule.py
| +-- helpers.py
| +-- api.py
+-- notebook.ipynb
这是api.py
的内容:
from subfolder.submodule import submodule_fun
def print_something(string):
print(submodule_fun(string))
# ...
if __name__ == '__main__':
run()
和submodule.py
:
from helpers import helper_fun
def submodule_fun(string):
stuff = helper_fun(string)
return stuff
当从命令行 运行 python api.py
时,这工作得很好。 submodule.py
文件只是简单地使用了 helpers.py
中的一些函数,不需要戏剧化。
但是,我也希望能够使用住在 some_module
之外的 notebook.ipynb
的 submodule.py
。当我在此笔记本中添加以下行时:
from some_module.subfolder import submodule
我收到以下错误:
~/some_module/subfolder/submodule.py in <module>
---> from helpers import helper_fun
ModuleNotFoundError: No module named 'helpers'
我尝试使用 setuptools
将所有 some_module
打包到一个合适的模块中,但我 运行 遇到了奇怪的错误,显然是因为该模块不直接存在于存储库的根目录中.
在这种情况下,如果不诉诸打包 some_module
,是否有办法能够从 notebook.ipynb
访问 submodule.py
?
尝试通过 OS 或编程方式(如下所示)将 some_module
添加到您的 PATH 或 PYTHONPATH 环境变量
import sys
import os
abspath = r"c:\your\path\to\some_module"
sys.path.append(os.path.abspath(abspath ))
from some_module.subfolder import submodule
作为打包的替代方法,您可以使用 poetry
来管理您的依赖项、虚拟环境,它会将您的项目安装到环境中,而无需实际生成包。