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

时间:2018-03-11 11:12:25

标签: google-colaboratory

我正在使用google colaboratory用python教授数据科学,为了让笔记本只留给学生的特定课程,我想导入一些我们编码的基本方法,而不是给他们一个预先填好的大笔记本用这些方法来防止任何干扰。

如何在不在pip上发布这些方法的情况下导入这些方法?可以从github google-colaborary pip安装吗?

对我们来说,最好的选择是能够在Drive中获得代码并将模块上传到colab空间,就像我们使用csv文件一样,并使用标准导入。这可能吗?

2 个答案:

答案 0 :(得分:7)

  

如何在不在pip上发布这些方法的情况下导入这些方法?能够   google-colaborary pip install from github?

是的,您可以通过在collab中运行bash命令(通过在命令中附加!)来从github执行pip install。例如:

!pip install git+<github_link>
  

我们的最佳选择是能够在云端硬盘中获取代码   并将模块上传到colab空间,就像我们使用csv文件一样,   并使用标准导入。这可能吗?

这有点棘手但可以通过使用[google-drive-ocamlfuse][1]在您的google协作实例上安装google-drive来完成。

您需要使用以下命令安装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驱动器:

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

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

!ls drive

应显示google云端硬盘中的所有文件。

答案 1 :(得分:3)

我有一个肮脏的把戏恰恰做到了。将我所有的代码打包在一个包中

!wget mysite/mypackage.py
from mypackage import *

类似地,如果mypackage具有依赖项,我可以获取一个zip文件并对其进行解压缩