为什么每次我重新运行 ipynb notebook 时python 都要求我安装一个包?

Why is python asking me to install a package every time I re-run the ipynb notebook?

我正在使用 google colaboratory with ipynb (Python 3.6.7),每次我 运行 脚本和导入模块 Scanpy python toolkit 它都说我没有它所以我必须重新安装它,这需要几分钟时间。

这里有一个类似的问题:

那里的答案并不令人满意,因为每次我 运行 安装脚本时都会安装 scanpy,这需要几分钟,这是不希望的。

我安装scanpy的方式是:

!pip3 install scanpy[louvain]

如果我再次 运行 脚本并尝试通过以下方式导入 scanpy:

import scanpy as sc

我收到以下错误消息:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-6-c75a4ac677d6> in <module>()
      1 import numpy as np
      2 import pandas as pd
----> 1 import scanpy as sc
      4 
      5 sc.settings.verbosity = 3 # verbosity: errors(0), warnings(1), info(2), hints(3)

ModuleNotFoundError: No module named 'scanpy'

---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.

To view examples of installing some common dependencies, click the
"Open Examples" button below.
---------------------------------------------------------------------------

所以我必须重新安装它,这很耗时并且不应该发生,因为其他已经安装的包(例如pandas、numpy等)没有显示这个问题。

我的问题是:

如何永久安装scanpy?

我应该可以随时导入 scanpy 而无需再次安装它...

根据本3 Essential Google Colaboratory Tips & Tricks的第二点:

目前,Google Colaboratory 中的软件安装不是永久性的,因为每次(重新)连接到实例时都必须重新安装库.由于 Colab 默认安装了许多有用的通用库,所以这并没有看起来那么严重,而且安装那些未预安装的库可以通过几种不同的方式之一轻松添加。

这似乎是我每次都必须重新安装scanpy的原因,因为它不是Colaboratory的默认包。