git - Google Colab 不应用我对本地目录中的代码所做的更改

标签 git google-colaboratory

我正在为一个项目使用从 git 克隆的存储库,并且我不断地对克隆的文件进行更改。我最近遇到了一个问题:无论我在克隆的 github 项目的本地文件中做了什么更改,这些更改都不会应用于 colab notebook(例如,如果我在这里和那里添加打印,则不会打印任何内容,但是函数被调用)。

在尝试将我的所有文件从我的 colab 推送到 git 后,我​​开始面临这个问题,因为我知道如果我只保存笔记本,它们不会被保存,我按照这里的命令操作:

https://navan0.medium.com/how-to-push-files-into-github-from-google-colab-379fd0077aa8

我不确定,但我可能已经启动了一些多线程,但我不擅长处理它。无论我改什么,都不会出现变化,我必须把变化推送到git,然后再克隆一次,然后它们才会出现。此外,我必须终止运行时,因为我无法用 !rm -rf directory_name 删除目录,它仍会出现在文件中。如果我重新运行相同的命令,它会说目录不存在。

我很确定它是多线程或一些 fork 进程。我想终止它。

链接到我的笔记本: https://colab.research.google.com/drive/1WMaDcEwOdPEsZL65nU_T4Ps9tIkyPY5v?usp=sharing

最佳答案

这里没有特定于 colab 的东西——任何长期存在的 Python session 都会以相同的方式运行。

您遇到的问题是 python 导入是幂等的:一旦您import foo,任何进一步import foo 的尝试都是没有操作。 (Python 将导入结果缓存在 sys.modules 中。)因此,如果您导入一个模块,编辑它,然后再次导入,您将看不到您的编辑。

如果您在 python REPL 中并尝试编辑文件并重新导入它,您会看到相同的结果。

你有两个简单的出路:

  • 重启python进程;在 Colab 中,这是 ctrl-m 。或 Runtime -> Restart runtime
  • 你可以使用importlib.reload重新导入更新后的代码。

reload 很棒,但我要警告您,它有很多锋利的边缘,很容易欺骗您自己。如果您的设置相当快(例如,您不必在内存中重新创建一堆大对象),重新启动是保持理智的好方法。

关于git - Google Colab 不应用我对本地目录中的代码所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67143677/

相关文章:

java - 无法将 Eclipse 项目克隆到工作区

git - 列出给定提交 ID 之前的提交

python - 使用 Python 时如何在 Google Colab 中引用文件?

python - 如何向我从机器学习数据库中提取的以下数据添加 header

python - ModuleNotFoundError : No module named 'pegasus'

IntelliJ IDEA 中的 Git Stash 与 Shelve

git difftool --dir-diff : how to copy back changed files

jupyter-notebook - 谷歌 Colab : how to turn off suggestion window?

linux - 混帐添加。也添加了其他项目的更改

google-colaboratory - 如何使用 Google Colab 上的示例数据文件?