Installation 如何在Colab中永久安装库?

Installation 如何在Colab中永久安装库?,installation,pip,google-colaboratory,Installation,Pip,Google Colaboratory,在Google Colaboratory中,我可以使用安装一个新库!pip安装程序包名称。但是当我明天再次打开笔记本时,我每次都需要重新安装 有没有办法永久安装库?无需每次都花时间安装即可使用?是。您可以在Google Drive中安装库。然后将路径添加到sys.path import os, sys from google.colab import drive drive.mount('/content/drive') nb_path = '/content/notebooks' os.sym

在Google Colaboratory中,我可以使用
安装一个新库!pip安装程序包名称
。但是当我明天再次打开笔记本时,我每次都需要重新安装


有没有办法永久安装库?无需每次都花时间安装即可使用?

是。您可以在Google Drive中安装库。然后将路径添加到
sys.path

import os, sys
from google.colab import drive
drive.mount('/content/drive')
nb_path = '/content/notebooks'
os.symlink('/content/drive/My Drive/Colab Notebooks', nb_path)
sys.path.insert(0,nb_path)
然后您可以安装一个库,例如,
jdc
,并指定目标

!pip install --target=$nb_path jdc
稍后,当您再次运行笔记本时,您可以跳过
!pip安装
行。您可以导入jdc并使用它。下面是一个示例笔记本


顺便说一句,我真的很喜欢jdc的
%%添加到
。它使使用大型类变得更加容易。

如果您想要无授权解决方案。您可以在笔记本中嵌入gcsfuse+服务帐户密钥的情况下使用挂载。像这样:

# first install gcsfuse
%%capture
!echo "deb http://packages.cloud.google.com/apt gcsfuse-bionic main" > /etc/apt/sources.list.d/gcsfuse.list
!curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
!apt update
!apt install gcsfuse
然后从google云控制台获取您的服务帐户凭据并将其嵌入笔记本中

%%writefile /key.json
{
  "type": "service_account",
  "project_id": "kora-id",
  "private_key_id": "xxxxxxx",
  "private_key": "-----BEGIN PRIVATE KEY-----\nxxxxxxx==\n-----END PRIVATE KEY-----\n",
  "client_email": "colab-7@kora-id.iam.gserviceaccount.com",
  "client_id": "100380920993833371482",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/colab-7%40kora-id.iam.gserviceaccount.com"
}
然后设置环境以查找此凭据文件

%env GOOGLE_APPLICATION_CREDENTIALS=/key.json
然后,您必须创建(或已经创建)一个gcs存储桶。并将其装载到一个生成的目录中

!mkdir /content/my-bucket
!gcsfuse my-bucket /content/my-bucket
最后,在那里安装库。我喜欢上面的答案

导入系统 nb_path='/content/my bucket' 系统路径插入(0,nb_路径) #只做一次 !pip安装--目标=$nb_路径jdc

您现在可以
导入jdc
,而无需
!pip下次安装。

我建议将nb_路径放在sys.path的开头,以防Colab中预装了同一软件包的旧版本
sys.path.insert(0,nb_path)
您的想法非常有趣和有用。但是每次我都要授权。我只想做一次这个过程。你知道解决这个问题的方法吗?如果是的话,我会在另一个帖子里问它。@vesszabo我想这是可能的。您需要使用gcsfuse在笔记本中使用嵌入的凭据(使用%%writefile)来装载Google云存储桶,而不是GDrive mount。虽然我从未尝试过。谢谢你的即时回复。很抱歉,但是“然后从google云控制台获取您的服务帐户凭据”部分对我来说有点困难。我在这里创建了一个新帖子,获取json凭证只需几个步骤。读一下,谢谢。我删除了新帖子。@KorakotChaovavanich,我成功地完成了所有步骤。但是,文件夹my bucket在新运行时不存在。我可以知道我哪里做错了吗?你必须在这里创建一个新的gcs bucket。(不要使用我的bucket,使用你自己的名字)