anaconda - 如何在 Google Colab 的 Google Drive 上安装 conda?
问题描述
! wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.8.2-Linux-x86_64.sh
! chmod +x Miniconda3-py37_4.8.2-Linux-x86_64.sh
! bash ./Miniconda3-py37_4.8.2-Linux-x86_64.sh -b -f -p /usr/local
import sys
sys.path.append('/usr/local/lib/python3.7/site-packages/')
此代码单元为我的 Google Colab 安装 conda。Colab 对其会话有时间限制,它会在 8 或 9 小时的活动计算后重置环境状态和数据,因此我需要一次又一次地重新启动此单元。
有没有办法在 Google Drive 上安装 conda 和我所需的所有软件包?
解决方案
这不是一个完美的解决方案,但它可能比每次都下载和构建新的 conda 安装更快。步骤概述:
- 将 conda 安装到 Colab 上的本地目录中,压缩此目录并将其存储在 Google Drive 上。
- 当您启动新的 Colab 笔记本或重新启动现有笔记本时,运行代码块以从 Google Drive 获取 conda 安装并重新设置环境。
1.创建conda安装和你需要的包(一次)
下载并安装 miniconda 到/content/miniconda3
目录:
%env PYTHONPATH=
! wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.9.2-Linux-x86_64.sh
! chmod +x Miniconda3-py37_4.9.2-Linux-x86_64.sh
! bash ./Miniconda3-py37_4.9.2-Linux-x86_64.sh -b -f -p /content/miniconda3
将 miniconda 添加到系统PATH
:
import os
path = '/content/miniconda3/bin:' + os.environ['PATH']
%env PATH=$path
安装你需要的 conda 包(例如 packagexyz):
!conda install -c conda-forge packagexyz -y
可选代码块:检查 packagexyz 是否正常工作。这应该打印 packagexyz 的版本及其在 conda 目录中的位置:
import sys
_ = sys.path.append("/content/miniconda3/lib/python3.7/site-packages")
import packagexyz
print(packagexyz.__version__, packagexyz.__file__)
将所有内容复制到 Google Drive(单击链接以获取身份验证代码,然后将其粘贴到框中):
from google.colab import drive
drive.mount('/content/drive')
!tar -zcf conda_colab.tar.gz /content/miniconda3
!cp conda_colab.tar.gz /content/drive/My\ Drive/
2. 将 conda 复制回 Colab(在重启笔记本时运行)
挂载Google Drive(需要再次输入验证码),拷贝回conda安装,重新设置环境:
from google.colab import drive
drive.mount('/content/drive')
!tar -xf /content/drive/My\ Drive/conda_colab.tar.gz -C ../
import os
path = '/content/miniconda3/bin:' + os.environ['PATH']
%env PATH=$path
%env PYTHONPATH=
import sys
_ = sys.path.append("/content/miniconda3/lib/python3.7/site-packages")
笔记
- 此解决方案仅经过轻微测试。您可能需要根据您安装的软件包设置其他环境变量。
tar
通过调整压缩设置,第 2 步可能会更快。如果你有一个非常大的 conda 安装,请考虑在第 1 步和第 2 步开始时使用apt-get
安装pigz
,然后添加--use-compress-program=pigz
到!tar...
命令以并行化压缩和解压缩步骤。
推荐阅读
- python - 如何仅在满足一个条件并从数据框中的单元格中删除值而不是行本身时才查找字符串?
- css - 如何递归批量转换整个项目中的 CSS 单元?
- python - 删除某些字符内的字符串
- angular - 如何在 Angular 的 observable 中返回可选值?
- c - while 中的动态内存分配
- android - IntelliJ IDEA 数据库插件中缺少“Android SQLite”项目
- c# - 使用 XMLSerializer 将对象序列化为 SOAP 编码的 XML 流
- jquery - 单击按钮转到下一步我想能够获取表格每一行的单元格1和单元格2的文本值并将它们都存储在json列表对象中
- html - 如何使需要的元素(在 html 中)不需要出现(在 css 中)
- php - 更新 Laravel 作曲家后空白页来了