【问题标题】:gcloud ml-engine with python3.5 tkinter import error on run运行时带有 python3.5 tkinter 导入错误的 gcloud ml-engine
【发布时间】:2018-12-29 04:53:03
【问题描述】:

我正在尝试在 Google 云机器学习引擎上运行我的模型:

gcloud ml-engine jobs submit training $NAME --module-name train.task_w2v \
     --package-path train --runtime-version 1.8 --python-version 3.5 \
     --scale-tier BASIC --staging-bucket $BUCKET --region $REGION

这是我的 setup.py:

from setuptools import find_packages
from setuptools import setup

REQUIRED_PACKAGES = ['numpy', 'tensorflow', 'pandas', 'matplotlib',
'opencv-python', 'PyYAML', 'coloredlogs', 'scikit-learn', 'scipy', 'matplotlib']

setup(
    name='ConvMultiAttention',
    version='0.9',
    author='name',
    install_requires=REQUIRED_PACKAGES,
    packages=find_packages(),
    include_package_data=True,
)

模型在本地运行良好并成功构建:

我master-replica-0 成功安装model-0.9 colourlogs-10.0 cycler-0.10.0 humanfriendly-4.15.1 kiwisolver-1.0.1 matplotlib-2.2.2 opencv-python-3.4.1.15 pyparsing-2.2.0 master -replica-0

我 master-replica-0 运行命令:python3 -m train.task_w2v master-replica-0

然后它得到了这个异常:

master-replica-0 Traceback(最近一次调用最后一次):文件“/usr/lib/python3.5/tkinter/__init__.py”,第 36 行,在 import _tkinter ImportError: No module named '_tkinter'

master-replica-0 命令 '['python3', '-m', 'train.task_w2v']' 返回非零退出状态 1

由于我的理解是 tkinter 是 python3.5 的一部分,我真的不知道这里出了什么问题,或者该怎么做。我尝试在没有 matplotlib 和较低 tf 版本的情况下运行它,但问题仍然存在。

我也收到以下警告:

google-cloud-spanner 0.29.0 有需求请求=2.18.4,但您将有不兼容的请求 2.13.0。

人类友好的脚本安装在 '/root/.local/bin' 中,它不在 PATH 上。

我真的不知道如何处理,或者我什至需要。

【问题讨论】:

    标签: python-3.x gcloud google-cloud-ml


    【解决方案1】:

    在无头培训工作中使用 TK 不会很有好处。正如 cmets 中的 user2368505 所指出的,以下应避免使用 TK:

    import matplotlib
    matplotlib.use("agg") 
    

    为了方便后人,我发现在我自己的本地 Ubuntu VM 上,没有安装 tkinter。如果需要,可以将以下内容添加到您的 `setup.py:

    import subprocess
    
    subprocess.check_call(['apt-get', '-y', 'install', 'python3-tk'])
    

    同样,不是直接有用,但用于展示如何通过setup.py 任意安装依赖项。

    【讨论】:

    • 我无权在 gcloud ml-engine 上执行此操作。我通过使用:“import matplotlib matplotlib.use("agg") import matplotlib.pyplot as plt”解决了这个问题,因为我不使用 tkinter。如果有办法在 ml 引擎上进行 apt-get 子流程调用,您能否将其添加到您的答案中,以便我可以为其他人接受它?
    • 我相信 apt-get 命令会起作用(即你应该有权限)。您有可能首先需要sudo。另外,我已经用agg 后端更新了我的答案。
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多