+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何检查是否在Jupyter Notebook中导入了Python模块

发布于2021-02-28 16:51     阅读(506)     评论(0)     点赞(14)     收藏(3)


0

1

2

3

4

5

我在使用此文件夹结构编写的Python包中有一些代码:

foo/
   __init__.py
   package1/
      __init__.py
      module1.py

在单独的Jupyter笔记本中,我从包装中导入了一些功能:

from foo.package1.module1 import a_function

但是,我希望有一些逻辑可以更改该程序包的使用方式以及某些功能的行为,具体取决于该程序包是否在Jupyter笔记本内核中运行。

所以在我中__init__.py,我尝试添加

def get_caller_filename() -> str:
    print(inspect.stack())
    filename = inspect.stack()[1].filename
    return filename

def perform_conditional_logic():
   if get_caller_filename().endswith(".ipynb"):
      ... # notebook specific logic
   else:
      ... # regular functionality

perform_conditional_logic() # this runs when the package is loaded
 

但是,get_caller_filename()仍然解决foo.package1.__init__.py我可以使用来检查堆栈框架inspect.stack(),但可以看到顶层堆栈不包括我的Jupyter笔记本。

检查我的程序包代码是否在Jupyter笔记本中运行的最佳方法是什么?


解决方案


我更喜欢使用os.environ或sys.path

如果sys.path包含ipython,则可以假定您正在通过jupyter运行。请同时检查os.environ。

0

1

2

3

4

5

6

7



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/863994/2e827750c4422f468bc6/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)