代码之家  ›  专栏  ›  技术社区  ›  Pablo Marin-Garcia

是否可以将我自己的模块导入到google colaboratory笔记本中?

  •  12
  • Pablo Marin-Garcia  · 技术社区  · 8 年前

    我正在使用google colaboratory教授python数据科学,为了让笔记本上只剩下学生们的具体课程,我想导入一些我们编写的基本方法,给他们一个大笔记本,上面预先填充了这些方法,以防止任何干扰。

    如何导入这些方法而不在pip上发布它们?。google colaborary pip可以从github安装吗?

    对我们来说,最好的选择是能够将代码保存在驱动器中,并像处理csv文件一样将模块上载到colab空间,并使用标准导入。这可能吗?

    2 回复  |  直到 8 年前
        1
  •  10
  •   Ankur Ankan    8 年前

    如何导入这些方法而不在pip上发布它们?。可以 从github安装google colaborary pip?

    是的,您可以通过运行bash命令(通过附加 ! 到命令)中。例如:

    !pip install git+<github_link>
    

    对我们来说,最好的选择是将代码放在驱动器中 将模块上传到colab space,就像我们处理csv文件一样, 并使用标准导入。这可能吗?

    这有点棘手,但可以通过使用在google collab实例上安装google驱动器来完成 [google-drive-ocamlfuse][1]

    您需要安装ocamlfuse并使用以下方式获得您的google帐户的权限:

    !apt-get install -y -qq software-properties-common python-software-properties module-init-tools
    !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
    !apt-get update -qq 2>&1 > /dev/null
    !apt-get -y install -qq google-drive-ocamlfuse fuse
    from google.colab import auth
    auth.authenticate_user()
    from oauth2client.client import GoogleCredentials
    creds = GoogleCredentials.get_application_default()
    import getpass
    !google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
    vcode = getpass.getpass()
    !echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
    

    然后使用以下方法安装google drive:

    !mkdir -p drive
    !google-drive-ocamlfuse drive
    

    之后,您可以使用以下方法检查装载是否成功:

    !ls drive
    

    它应该显示google驱动器中的所有文件。

        2
  •  6
  •   Sergio Lucero    7 年前

    我有一个肮脏的把戏,就是这样做的。将所有代码放在一个包中,我可以

    !wget mysite/mypackage.py
    from mypackage import *
    

    同样,如果mypackage有依赖项,我可以创建一个zipfile和!解压缩它