【发布时间】:2020-01-18 22:36:04
【问题描述】:
在 jupyter notebook 中,以下 gcloud 命令适用于 bang(!) 但不适用于 %%bash
import os
PROJECT = 'mle-1234'
REGION = 'us-central1'
BUCKET = 'mle-1234'
# for bash
os.environ['PROJECT'] = PROJECT
os.environ['BUCKET'] = BUCKET
os.environ['REGION'] = REGION
os.environ['TFVERSION'] = '1.14.0' # Tensorflow version
# Set GCP Project and Region
%%bash
gcloud config set project $PROJECT
gcloud config set compute/region $REGION
gcloud config list
当我使用 %%bash 执行上面的最后一个 sn-p 时收到此错误消息
File "<ipython-input-16-f93912dbcc34>", line 3
gcloud config set project $[PROJECT]
^
SyntaxError: invalid syntax
但是,项目和区域值是使用相同的代码行设置的,但通过删除 %%bash 并为所有 gcloud 命令添加前缀 (!)。
# Set GCP Project and Region
!gcloud config set project $PROJECT
!gcloud config set compute/region $REGION
!gcloud config list
使用 (!) 的结果
Updated property [core/project].
Updated property [compute/region].
[compute]
region = us-central1
zone = us-central1-a
[core]
account = my-service-account@mle-1234.iam.gserviceaccount.com
disable_usage_reporting = False
project = mle-1234
What could be the reason for this behavior?
【问题讨论】:
-
随机猜测:
%%bash需要放置在 first 行的一个神奇位置,类似于 shebang (#!) 必须位于第一行一个脚本。如果删除上面的注释并将%%bash放在第一行会发生什么?有什么变化吗?
标签: bash google-cloud-platform gcloud shebang