从不在“main.py”级别的笔记本中进行相对导入

42皮拉塔斯

我有一个像下面这样的结构:

/src
    __init__.py
    module1.py
    module2.py
/tests
    __init__.py
    test_module1.py
    test_module2.py
/notebooks
    __init__.py   
    exploring.ipynb
main.py

我想使用笔记本“探索”做一些数据探索,这样做我需要执行的相对进口module1module2但是,如果我尝试运行from ..src.module1 import funct1,我会收到一个ImportError: attempted relative import with no known parent package我理解这是预期的,因为我正在运行笔记本,就好像它是一个脚本而不是一个模块。

因此,作为一种解决方法,我主要是在main.py每次需要使用笔记本时将其文件夹外的笔记本拉到水平位置,然后才能from src.module1 import funct1工作。

我知道相对导入已经有大量线程,但到目前为止我找不到更简单的解决方案来完成这项工作,而不必每次都移动笔记本。鉴于被调用时的笔记本正在“作为脚本”运行,有什么方法可以执行此相对导入?

耶利扎维塔·韦利扎尼娜

脚本不能进行相对导入。你有没有考虑过这样的事情:

if __name__ == "__main__":
    sys.path.insert(0,
        os.path.abspath(os.path.join(os.getcwd(), '..')))
    from src.module1 import funct1
else:
    from ..src.module1 import funct1

或者使用异常:

try:
    from ..src.module1 import funct1
except ImportError:
    sys.path.insert(0,
        os.path.abspath(os.path.join(os.getcwd(), '..')))
    from src.module1 import funct1

?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R软件包构建:如何从不在CRAN上的软件包中导入函数

从不在标准目录中的规则集引用自定义php codeniffer进行嗅探

从不在UIViewController上调用LoadView

我从不在ViewModel的LiveDataScope中输入

如何从不在表中的列表中获取ID?

从不在列表中的内容构建新词典

从不在列表中的主机获取数据

如何从不在表外的 DataTable 制作下拉列表?

从不在 PostgreSQL 表中的文字值中选择?

使用实体框架从不在 MyList<T>(field) 中的实体中选择

从不在我的类路径中的路径加载属性文件

如何从不在Spring容器中的类访问Spring Bean的方法

Log4j2 RollingFileManager OnStartupTriggeringPolicy 从不在启动时滚动文件

如何从不在heroku上运行的作业将日志发送到papertrail heroku插件?

试图从不在类内但位于脚本中作为变量的网站抓取信息

如何从不在任何字典中的JSON文件中删除无关的数据?(HTTP日志)

在Javascript中,从不在数组中的对象中删除键

如何将RSPEC配置为从不在RAILS_ENV生产中运行

从不在同一网络上的设备连接Flask Web服务

程序从不在我的char字符串数组中执行“ 0”

如何从不在同一表中的表中获取计数/记录?

在React中,是否可以从不在/ src中的本地文件获取数据?

从不在 DataSource 中的变量设置 DataGrid 单元格值

如何从不在内部类中的ActionListener返回值

从不在 Axon 中工作的事件处理程序发布新事件

从不在 BIOS 中的操作系统启用 CPU 选项

如何从不在python列表中的数据框中删除单词

导入tensorflow在终端中工作,但不在jupyter笔记本中

ValueError:尝试在非包中进行相对导入 - 在 python 中进行相对导入