在谷歌Colab上导入自己的ipynb文件

5
我正在使用谷歌Colab来处理Jupyter笔记本中的IT技术相关内容(所有文件都在驱动器中)。我有两个文件:Exploratory_Data_Analysis.ipynb 和 PCA.ipynb。 我想要在第二个文件中导入来自第一个文件的数据。若只是在本地使用Jupyter笔记本(而不是使用Google Colaboratory),则只需简单执行以下操作即可实现导入:
!pip install import-ipynb
import import_ipynb
import Exploratory_Data_Analysis as eda

但是使用谷歌Colab,我尝试了以下操作:
!pip install import-ipynb
import import_ipynb

!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
import os
import pandas as pd
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

listed = drive.ListFile({'q': "'1CXqv7-PZmYrWes4MOk' in 
parents and trashed=false"}).GetList()
for file in listed:
    print('title {}, id {}'.format(file['title'], file['id']))

eda = os.path.join(download_path, 'Exploratory_Data_Analysis.ipynb')
temp_eda = drive.CreateFile({'id': '1YpDhXGeJVtzuxUJS5gKsUbm'})
temp_eda.GetContentFile(eda)

import Exploratory_Data_Analysis

获取这个:
importing Jupyter notebook from Exploratory_Data_Analysis.ipynb
NotJSONError: Notebook does not appear to be JSON: ''...

有没有其他方法在Google Colab上导入自己的ipynb文件?
3个回答

7
您已经成功将您的笔记本/ipynb文件导入到Google Colab项目中了吗?我将我的本地jupyter-notebook正在进行的工作迁移到Google Colab的方法是使用Github和Clouderizer。这种方法还允许我在本地环境下像平常一样使用jupyter notebook环境,但可以立即将我的工作同步到Google Colab。此外,这种方法还允许我通过简单地执行"import "的操作,将.ipynb/.py模块导入到我正在工作的笔记本中。我建议您使用这种设置,而不是在Google Colab上使用复杂的Linux命令行。以下是如何使用Clouderizer轻松设置从github到Google Colab的笔记本的教程:Medium tutorial
基本上,这些是使用Clouderizer设置ipynb笔记本以及数据集文件夹的步骤:

Google Colab项目的Clouderizer

先决条件

  1. 注册google/gmail帐户
  2. 注册Clouderizer帐户 [link]
  3. 在您的github上创建一个存储库,并上传您的项目(所有ipynb、py模块,甚至数据集(如果<1GB)可进行压缩)到您的存储库中。

设置Clouderizer项目

  1. 登录 Clouderizer 控制台。首次登录时,系统会提示您将 Google Drive 与 Clouderizer 连接。请按照屏幕上的指示进行操作。如果没有提示链接,则可以通过进入 Clouderizer 仪表板 -> 侧边栏菜单 -> Clouderizer Drive 来配置您的 Google Drive。Clouderizer 将在您的 Google Drive 中设置一个名为“clouderizer”的文件夹,以包含您的 ipynb 项目(无论是机器学习还是其他任何项目)。
  2. 返回 Clouderizer 仪表板。然后点击新建项目。按照说明操作,您可以选择加载整个包含您要上传到 Google Colab 的 ipynb 工作的 github 项目。
  3. 在第5步中,您可以通过指定数据集的 URL(例如来自 kaggle 数据集 URL)来包含您想要处理的其他数据集。您还可以选择并指定是否要通过为数据集、主代码/模块和输出文件创建单独的文件夹来重构您的项目。
  4. 接下来,前往 Google Colab / 在您的 Google Drive 中创建一个 Google Colab 文件,然后执行:!wget NS-content disposition 'https://to_whatever_link_you_get_to_console'
  5. 最后,返回 Clouderizer 仪表板,并检查您的项目环境是否已运行并同步到 Google Colab。然后在该仪表板中单击 jupyter notebook 图标,就在您给出的项目标题名称旁边。现在,您可以像在本地计算机上一样开始进行机器学习或其他工作,然后立即将其同步到 Google Colab。
  6. 最后,您将能够验证您的 .ipynb 是否能够在 Google Colab 中正常工作,并且能够导入模块/数据集。只需返回 Google Drive->clouderizer 文件夹->您的项目。然后尝试运行并查看是否与 jupyter notebook 中的一样正常工作。

2
你应该在答案中列出这个迁移的步骤,现在它还不完整。 - Matthieu Brucher
1
@MatthieuBrucher 我会立即处理。 - Daniel Kurniadi

2
以下代码对我完美地起作用了。 1. 将所有的ipynb文件复制到一个Colab文件夹中 2. 从Colab共享ipynb文件,参见链接: https://www.pingshiuanchua.com/blog/post/importing-your-own-python-module-or-python-file-in-colaboratory 3. 然后按照以下步骤操作:
!pip install import-ipynb
import import_ipynb
# Install the PyDrive wrapper & import libraries.
# This only needs to be done once per notebook.
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# Authenticate and create the PyDrive client.
# This only needs to be done once per notebook.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# Copy the link and remove the front part of the link (i.e. https://drive.google.com/open?id=) to get the file ID.
your_module = drive.CreateFile({'id':'eyetgd1zyxwvutsrqponmlkjihgfedcba'})
your_module.GetContentFile('myfile.ipynb')
import myfile

按照您的步骤,我成功导入了笔记本,但是无法使用其中的任何内容 :'( - Jose Macedo

0

你只需要运行以下代码:

%run YourOtherModule.ipynb


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