Python 3.x gcloud ml引擎运行时出现python3.5 tkinter导入错误
我正尝试在Google cloud ml引擎上运行我的模型,其中包括:Python 3.x gcloud ml引擎运行时出现python3.5 tkinter导入错误,python-3.x,gcloud,google-cloud-ml,Python 3.x,Gcloud,Google Cloud Ml,我正尝试在Google cloud ml引擎上运行我的模型,其中包括: 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 这
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,
)
模型在本地运行良好,并成功生成:
I master-replica-0已成功安装model-0.9 coloredlogs-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
I master-replica-0运行命令:python3-m train.task_w2v master-replica-0
但它得到了一个例外:
master-replica-0回溯(最后一次调用):文件“/usr/lib/python3.5/tkinter/_init__.py”,第36行,在import\u tkinter ImportError中:没有名为“\u tkinter”的模块
master-replica-0命令'['python3','-m','train.task_w2v']'返回非零退出状态1
因为我的理解是tkinter是python3.5的一部分,所以我真的不知道这里出了什么问题,或者该怎么办。我尝试在没有matplotlib的情况下运行它,并使用较低的tf版本,但问题在于
我还收到以下警告:
google cloud Spaner 0.29.0的requirement requests=2.18.4,但您的requests为2.13.0,这是不兼容的
脚本humanfriendly安装在“/root/.local/bin”中,但不在路径上
我真的不知道如何处理,或者我甚至不知道是否需要处理。在无头培训工作中使用TK不会有什么好处。正如user2368505在评论中指出的,应避免使用TK:
import matplotlib
matplotlib.use("agg")
为了对子孙后代有利,我发现在我自己的本地Ubuntu虚拟机上没有安装tkinter。如果需要,可以在“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,
)
import subprocess
subprocess.check_call(['apt-get', '-y', 'install', 'python3-tk'])
同样,这也不是直接有用的,但可以用来展示如何通过
setup.py
任意安装依赖项,我没有在gcloud ml引擎上执行此操作的权限。我通过使用“import matplotlib matplotlib.use(“agg”)import matplotlib.pyplot as plt”解决了这个问题,因为我不使用tkinter。如果有办法在ml引擎上进行apt get子进程调用,您可以将其添加到您的答案中,以便我可以为其他人接受它吗?我相信apt get命令会起作用(即,您应该有权限)。您可能首先需要sudo
。另外,我已经用agg
后端更新了我的答案。