我在Google Colab有几本不同的笔记本电脑,用于自动化一些任务。 我想创建一个单一的Notebook,可以运行所有这些任务,这样我就可以打开一个单独的标签页,运行它,它将在这些不同的Notebooks中运行所有其他任务。
关于这个问题,我有两个问题:
- 我找到的解决方案不起作用(我将在下面描述它)。 如何使其起作用?
- 是否有比我找到的更好的解决方案?
关于第一个问题:
假设我有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相关的平台,我不能在本地运行任何内容。
NameError
提供一个 MRE。我可以轻松地从笔记本中调用使用标准库之外的东西并保存在模块中的函数,就像你正在尝试做的那样。 - AlexK%run /content/drive/MyDrive/my_notebooks/Notebook_1.ipynb
,它既运行安装命令又将函数导入主笔记本,以便您可以在那里调用它们。 - AlexK