繁体   English   中英

从 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时,这非常python api.py submodule.py文件只是使用helpers.py一些函数, helpers.py任何戏剧性。

不过,我也希望能够使用submodule.pynotebook.ipynb其居住之外some_module 当我在这个笔记本中添加以下几行时:

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到一个适当的模块中,但我setuptools了奇怪的错误,显然是因为该模块并不直接存在于存储库的根目录中。

在不借助包装some_module ,有没有办法在这种情况下从notebook.ipynb访问submodule.py

尝试通过操作系统或以编程方式将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来管理您的依赖项、虚拟环境,它会将您的项目安装到环境中,而无需实际生成包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM