【问题标题】:How do I install a library permanently in Colab?如何在 Colab 中永久安装库?
【发布时间】:2019-08-10 17:14:08
【问题描述】:

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

有没有办法永久安装库?每次使用都不需要花时间安装?

【问题讨论】:

    标签: installation pip google-colaboratory


    【解决方案1】:

    是的。您可以在 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 install 行。你可以import jdc 并使用它。这是一个示例笔记本。

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

    顺便说一句,我真的很喜欢jdc%%add_to。它让大型班级的工作变得更加容易。

    【讨论】:

    • 我建议将 nb_path 放在 sys.path 的开头,以防 Colab 中预装了同一软件包的旧版本。 sys.path.insert(0, nb_path)
    • 你的想法很有趣也很有用。但是我每次都应该授权。我只想做一次这个过程。你也知道这个的解决方案吗?如果是,我会在另一个帖子中询问。
    • @vesszabo 我想这是可能的。您需要使用 gcsfuse 使用笔记本中的嵌入式凭据(使用 %%writefile)来安装 Google Cloud Storage 存储桶,而不是 GDrive 挂载。虽然我从来没有尝试过。
    【解决方案2】:

    如果您想要无授权解决方案。您可以使用嵌入在笔记本中的 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
    

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

    %%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
    

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

    import sys
    nb_path = '/content/my-bucket'
    sys.path.insert(0, nb_path)
    # Do this just once
    !pip install --target=$nb_path jdc
    

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

    【讨论】:

    • 感谢您的即时答复。对不起,“然后从谷歌云控制台获取您的服务帐户凭据”部分对我来说有点困难。我在这里创建了一个新帖子stackoverflow.com/questions/57712030/…
    • 获取json凭证只需几步。阅读此cloud.google.com/iam/docs/…
    • 谢谢。我删除了新帖子。
    • @KorakotChaovavanich,我成功地完成了所有步骤。但是,文件夹 my-bucket 不在新的运行时中。我可以知道我哪里做错了吗?
    • 这里必须新建一个gcs bucket。(不要用my-bucket,用自己的名字)console.cloud.google.com/storage/browser
    猜你喜欢
    • 2020-11-24
    • 2021-08-23
    • 1970-01-01
    • 2020-12-06
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多