Python gcloud ml引擎本地预测运行时错误:在.pyc文件中存在错误的幻数
我的目标是在google cloud ml引擎上进行预测 我在linux ubuntu 16.04LT上安装了gcloud sdk,如下所示。 我已经有了一个经过机器学习训练的模型。 我正在使用python版本AnacondaPython 3.5 我运行:Python gcloud ml引擎本地预测运行时错误:在.pyc文件中存在错误的幻数,python,tensorflow,google-cloud-platform,gcloud,google-cloud-ml,Python,Tensorflow,Google Cloud Platform,Gcloud,Google Cloud Ml,我的目标是在google cloud ml引擎上进行预测 我在linux ubuntu 16.04LT上安装了gcloud sdk,如下所示。 我已经有了一个经过机器学习训练的模型。 我正在使用python版本AnacondaPython 3.5 我运行: gcloud ml-engine local predict --model-dir={MY_MODEL_DIR} --json-instances={MY_INPUT_JSON_INSTANCE} 我收到消息:错误: (gcloud.ml
gcloud ml-engine local predict --model-dir={MY_MODEL_DIR} --json-instances={MY_INPUT_JSON_INSTANCE}
我收到消息:错误:
(gcloud.ml engine.local.predict)运行时错误:.pyc文件中的幻数错误
下面是所有堆栈跟踪:
DEBUG: (gcloud.ml-engine.local.predict) RuntimeError: Bad magic number in .pyc file
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 797, in Execute
resources = calliope_command.Run(cli=self, args=args)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 757, in Run
resources = command_instance.Run(args)
File "/usr/lib/google-cloud-sdk/lib/surface/ml_engine/local/predict.py", line 65, in Run
args.text_instances)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine/local_utils.py", line 89, in RunPredict
raise LocalPredictRuntimeError(err)
LocalPredictRuntimeError: RuntimeError: Bad magic number in .pyc file
ERROR: (gcloud.ml-engine.local.predict) RuntimeError: Bad magic number in .pyc file
Evaluation ended**
事实上,我自己发布这个问题是为了帮助有同样问题的人,因为我找不到一个简单简洁的答案 还有其他的解决办法,在我看来甚至比我的更好,但这正是我所能解决的 我的解决方案是google cloud sdk不能与python 3配合使用,至少在我的配置中是这样。要解决:
我希望能帮助一些人。实际上,它与python3一起工作,你只需要删除google cloud文件夹中的pyc文件,这样预测调用就可以用python3编译它们 为了知道pyc文件的位置,我在预测调用中启用了标志--verbosity debug:
gcloud ml-engine local predict --model-dir=${MODEL_LOCATION} --json-instances=data/new-data2.json --verbosity debug
trackback将为您提供有关gcloud ml引擎文件路径的信息,在我的计算机中:
/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine/
转到该目录并删除pyc文件。在google SDK中查找并删除所有pyc文件。它们是用错误的python环境编译的。下次需要时,它们将自动重新编译
%%bash
find "/tools/google-cloud-sdk/lib/" -name '*.pyc' -delete
以下是在Ubuntu中修复此问题的步骤: 1.导航到ml_引擎路径 cd/usr/lib/googlecloudsdk/lib/googlecloudsdk/command_lib/ml_引擎 2.删除以.pyc结尾的文件
在笔记本电脑中运行以下单元格:
%%bash
sudo find "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine" -name '*.pyc' -delete
上面的技巧是有效的,但我发现了另一个似乎是永久性的选项,那就是在Python3中使用GCPSDK 例如,使用anaconda创建Python3环境,或者使用现有的Python3安装 创建一个文件gcp-sdk.yaml:
name: env_gcp_sdk
channels:
- defaults
- conda-forge
dependencies:
# core packages
- python=3.7.5
- pip=20.0.2
- pip:
- google-cloud-storage
- google-cloud-bigquery
- google-cloud-kms
- google-cloud-pubsub
然后创建环境:
conda env create -f gcp-sdk.yaml
现在设置以下偶数变量,我不需要再删除*.pyc文件:
os.environ['CLOUDSDK_PYTHON']='path_to_env/env_gcp_sdk/bin/python'
os.environ['CLOUDSDK_GSUTIL_PYTHON']='path_to_env/env_gcp_sdk/bin/python'
谢谢我被这条消息困扰了一段时间,在你的帮助下,我现在已经克服了它:)我使用Python3.6和虚拟环境。它工作得很好!非常感谢。有一个新命令:
gcloud ai platform local predict--model dir=${model_LOCATION}--json instances=data/new-data.json--verbosity debug
,这可能会导致相同的行为和相同的解决方案应用。我认为,这个解决方案已被弃用。有人能证实吗?删除pyc文件的建议看起来更好,但这对我来说很有效