Jupyter:为什么我不能使用包含 shell 命令的方法导入 `.py` 文件?

Jupyter: why can't I import a `.py` file with a method containing a shell command?

这是我笔记本上的作品 (python 3):

from google.colab import auth
def google_cloud_auth(project_id):
  auth.authenticate_user()
  !gcloud config set project {project_id}
  return project_id

project_id = "my-project"
google_cloud_auth(project_id)
# Updated property [core/project].

这不是:

import colab_utils

project_id = "my-project"
colab_utils.google_cloud_auth(project_id)
# ERROR:
  File "/content/colab_utils.py", line 14
    !gcloud config set project {project_id}
    ^
SyntaxError: invalid syntax

colab_utils.py

中的方法相同

我做错了什么?

这些命令不应该在原版中工作 Python。

感叹号(以及许多其他单元格魔术功能)是 Jupyter/IPython shell 的特定功能。它们在命令执行之前由 shell 处理,从未传递给实际的 Python.