如何在Colab中永久安装库?

Kor*_*ich 5 install pip google-colaboratory

在Google Colaboratory中,我可以使用来安装新的库!pip install package-name。但是,明天明天再次打开笔记本电脑时,每次都需要重新安装。

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

Kor*_*ich 10

如果你想要一个无授权的解决方案。您可以使用嵌入在笔记本中的 gcsfuse + service-account 密钥进行安装。像这样:

# 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
Run Code Online (Sandbox Code Playgroud)

然后从谷歌云控制台获取您的服务帐户凭据并将其嵌入到笔记本中

%%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"
}
Run Code Online (Sandbox Code Playgroud)

然后设置环境来查找这个凭证文件

%env GOOGLE_APPLICATION_CREDENTIALS=/key.json
Run Code Online (Sandbox Code Playgroud)

然后您必须创建(或已经拥有)一个 gcs 存储桶。并将其挂载到创建的目录中。

!mkdir /content/my-bucket
!gcsfuse my-bucket /content/my-bucket
Run Code Online (Sandbox Code Playgroud)

最后,在那里安装库。就像我上面的回答。

# 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
Run Code Online (Sandbox Code Playgroud)

下次你现在可以import jdc不用!pip install它。

  • 只需几个步骤即可获取 json 凭证。阅读此 https://cloud.google.com/iam/docs/creating-managing-service-account-keys (2认同)

Kor*_*ich 5

是。您可以在Google云端硬盘中安装该库。然后将路径添加到sys.path

import os, sys
from google.colab import drive
drive.mount('/content/mnt')
nb_path = '/content/notebooks'
os.symlink('/content/mnt/My Drive/Colab Notebooks', nb_path)
sys.path.insert(0,nb_path)
Run Code Online (Sandbox Code Playgroud)

然后,您可以安装一个库,例如jdc,并指定目标。

!pip install --target=$nb_path jdc
Run Code Online (Sandbox Code Playgroud)

稍后,当您再次运行笔记本时,您可以跳过该!pip install行。您可以import jdc使用它。这是一个示例笔记本。

https://colab.research.google.com/drive/1KpMDi9CjImudrzXsyTDAuRjtbahzIVjq

顺便说一句,我真的很喜欢jdc%%add_to。这使得与大班学生的合作变得更加容易。

  • 我建议将nb_path放在sys.path的开头,以防Colab中预先安装了该软件包的较早版本。sys.path.insert(0,nb_path) (2认同)
  • jdc 是谁?%%add_to cell 魔法有什么作用? (2认同)