如何在Google Colab中运行多个笔记本?

4

我在Google Colab有几本不同的笔记本电脑,用于自动化一些任务。 我想创建一个单一的Notebook,可以运行所有这些任务,这样我就可以打开一个单独的标签页,运行它,它将在这些不同的Notebooks中运行所有其他任务。

关于这个问题,我有两个问题:

  1. 我找到的解决方案不起作用(我将在下面描述它)。 如何使其起作用?
  2. 是否有比我找到的更好的解决方案?

关于第一个问题:

假设我有Notebook_1和Notebook_2,每个笔记本都有一堆自动化任务的函数。 我要做的是将它们下载为Notebook_1.py和Notebook_2.py,并将这些文件保存在Google Drive文件夹中。 然后在我的Notebook_main中,这个笔记本应该包含所有笔记本电脑,我运行:

# Mounts Google Drive
from google.colab import drive
drive.mount('/content/drive')

# Copies .py files into Google Colab
!cp /content/drive/MyDrive/my_modules/Notebook_1.py /content
!cp /content/drive/MyDrive/my_modules/Notebook_2.py /content

# Import Modules

import Notebook_1
import Notebook_2

如果我想在这些模块中运行一个简单的函数,我只需执行以下操作:

Notebook_1.run_simple_function()

这是有效的。 我遇到的问题是,当我尝试从Notebook_1运行另一个模块中的函数时,出现以下错误:

name 'os' is not defined

我想这是因为在 Notebook_1.py 文件内调用了以下内容:

import os
...
os.remove(os.path.join(dir_download, item))
...

我认为我在Notebook_1.py中调用的所有模块都会出现这种情况。

我已经尝试将这些模块导入到Notebook_main中,但是没有成功。我不知道如何解决。我需要帮助。

另一个问题是我使用了大量的Selenium,需要在导入之前在Google Colab中安装它。因此,我需要在Notebook_main中安装和导入它,并且当我运行一个带有Notebook_1.run_function_that_uses_selenium()的函数时,它应该使用Notebook_main中的导入。

第二个问题比较简单,我只想知道是否有更好的方法来实现相同的结果,即从单个笔记本电脑中在Google Colab中运行不同的笔记本电脑。

我的限制是我只能使用Google Colab和其他与Google相关的平台,我不能在本地运行任何内容。


1
你尝试过这个答案中描述的方法吗?this - AlexK
1
你可能需要为 NameError 提供一个 MRE。我可以轻松地从笔记本中调用使用标准库之外的东西并保存在模块中的函数,就像你正在尝试做的那样。 - AlexK
1
对于使用类似Selenium的工具,我建议将所有内容保留在笔记本格式中,在使用这些包的笔记本中安装和导入这些包(在您的情况下,在Notebook_1.ipynb中安装和导入Selenium),并在主笔记本中使用%run /content/drive/MyDrive/my_notebooks/Notebook_1.ipynb,它既运行安装命令又将函数导入主笔记本,以便您可以在那里调用它们。 - AlexK
1
请访问 https://dev59.com/D1MI5IYBdhLWcg3wv-TL#L7mkEYcBWogLw_1bOjDM。目前我不知道您是在运行笔记本还是 .py 文件,但如果您正在从笔记本创建 .py 文件,则最好的方法是转到 Google Colab 中的 文件 > 下载 > 下载 .py 来创建它。 - AlexK
1
你创建文件的方式有些问题。一个文件应该有文件扩展名。除了我上面说的,我无法再添加更多内容了。 - AlexK
显示剩余5条评论
1个回答

2

简单。

from google.colab import drive
drive.mount('/content/gdrive')

那么

libdir = "/content/gdrive/My\ Drive/Colab\ Notebooks/lib/"
%run {libdir}MyNotebook.ipynb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接