我正在使用google笔记本编写一些编码工作。在book1中,我需要调用一些在book2中定义的函数。
Book1和book2都位于同一个谷歌驱动器和文件夹中。
book1:
from google.colab import drive
drive.mount('/content/drive', force_remount=True)
from kora import drive as kora_drive
kora_drive.link_nbs()
import book2 as b2
b2.function1()book2:
def function1():
print('function1 called')当我从书中链接book2时,可以成功地调用function1()。但是,如果我在book2中更改了一些代码,例如,在book2中添加了一个新函数
def function2():
print('function2 called')在book2中进行更改后,我单击了“保存”,并刷新了驱动器和文件夹以及book2和book1。但是,当我试图从function2从book1调用时,我得到了错误:
AttributeError: module 'book2' has no attribute 'function2'我尝试重新装入驱动器并重新导入book2,还尝试了以下两个帖子,但它们都没有工作。
https://stackoverflow.com/questions/53358250/google-colaboratory-how-to-refresh-google-drive
https://stackoverflow.com/questions/59020008/how-to-import-functions-of-a-jupyter-notebook-into-another-jupyter-notebook-in-g有人能指出我错过了什么吗?
谢谢
UPDTAE
在book1,我试过
!pip install import-ipynb
import import_ipynb
import sys
sys.path.insert(1, r'/content/drive/MyDrive/Colab Notebooks/book2.ipynb')我也试过
sys.path.insert(1, r'/content/drive/MyDrive/Colab Notebooks/')但是,"book2“的最新更新仍然无法从book1.ipynb中找到。
发布于 2021-08-15 02:35:09
为了确保,您的函数位于py文件中,而不是ipydb文件,对吗?
如果它们位于py文件中,则可以执行以下两种方法之一。
您需要将该目录更改为函数位于%cd "mnt/My Drive/Pyfunctions"的位置。确保您知道要导入的python文件位于何处。
您也可以使用sys库实现这一点,
import sys
sys.path.insert(1, r'/mnt/My Drive/pyfunctions')似乎您已经成功地在第一次加载了函数,然后对其进行了更改。我相信这不是谷歌驱动的工作方式。加载驱动器后,所有文件都是该时间点的文件快照。进行更改不会影响已经加载的文件。
这是在我添加函数并尝试重新加载模块之后的样子。

创建更改寄存器的唯一方法是单击Runtime / Restart Runtime或CTRL +M。(完全停止)并重新加载模块。
我已经在我的colab运行时成功地做到了这一点。

https://stackoverflow.com/questions/68788108
复制相似问题