在jupyter笔记本中,以下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执行上面的最后一个片段时,我得到了此错误消息
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?
答案 0 :(得分:0)
%%bash
被认为是 Built-in magic commands 的一部分。在子流程中使用bash运行单元格。这是%%script bash
的快捷方式。您可以将来自多个内核的代码组合到一个笔记本中。例如:
%%HTML
%%python2
%%python3
%%ruby
%%perl
实现:
%%bash
factorial()
{
if [ "$1" -gt "1" ]
then
i=`expr $1 - 1`
j=`factorial $i`
k=`expr $1 \* $j`
echo $k
else
echo 1
fi
}
input=5
val=$(factorial $input)
echo "Factorial of $input is : "$val
以爆炸字符(例如)开头的代码单元!,指示jupyter将该行上的代码视为 OS shell command
!cat /etc/os-release | grep VERSION
输出:
VERSION="16.04 LTS (Xenial Xerus)"
VERSION_ID="16.04"
答案::由于您使用的是
gcloud
命令,因此Jupyter会将其解释为OS Shell命令。因此,使用!glcoud
即可。