在Colab中导入已安装的软件包之前,需要重新启动运行时

时间:2019-09-07 06:10:17

标签: jupyter-notebook google-colaboratory

我正在尝试安装和使用Google Colab中的现有python软件包。为此,我从Colab的Github下载了代码并安装了软件包,但是当尝试导入已安装的软件包时,出现了ModuleNotFoundError: No module named 'gem'错误。

但是,如果重新启动运行时并再次运行导入单元,则不会出现错误。

我想知道为什么在安装软件包之后和导入之前需要重新启动运行时。

任何聪明的回应将不胜感激。

我的代码是:

[1] !wget --show-progress --continue -O /content/gem.zip https://github.com/palash1992/GEM/archive/master.zip

[2] !unzip gem.zip

# Installing Dependencies
[3] ! pip install keras==2.0.2

[4] %cd GEM-master
!sudo python3 setup.py install
%cd-

[5] from gem.utils import graph_util, plot_util

我得到的错误是:

ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-5-af270a37878a> in <module>()
      1 import matplotlib.pyplot as plt
      2 
----> 3 from gem.utils import graph_util, plot_util
      4 from gem.evaluation import visualize_embedding as viz
      5 from gem.evaluation import evaluate_graph_reconstruction as gr

ModuleNotFoundError: No module named 'gem'

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

但是,如果在安装软件包之后并在导入之前使用os.kill(os.getpid(), 9)重新启动运行时,则不会出现上述错误。

2 个答案:

答案 0 :(得分:1)

似乎除了简单的!pip install之外的所有内容似乎都没有包含在colab的模块注册表中,除非在运行时重新启动之后。很可能,colab具有相当幼稚的方式来跟踪可用模块。如果导入以前安装的软件包的其他版本,则还必须重新启动运行时。

可能他们只有一个脚本,该脚本在运行时将pip个已安装软件包的元数据附加到类似列表的对象上。并且import只是从列表顶部搜索(这就是为什么diff版本的软件包需要重新启动的原因。)

但是,当启动新的运行时时,将通过搜索相关目录来初始化和填充类似列表的注册表。

答案 1 :(得分:0)

要强制重启:

'df_vals_prod'

基于对Google Colab - How to 'restart runtime' using python code or command line interface?的多个答案。