Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pip安装google cloud pubsub在docker容器中安装失败_Python_Docker_Google Cloud Pubsub - Fatal编程技术网

Python pip安装google cloud pubsub在docker容器中安装失败

Python pip安装google cloud pubsub在docker容器中安装失败,python,docker,google-cloud-pubsub,Python,Docker,Google Cloud Pubsub,我正在尝试使用一个pupsub模拟器。它启动了,但是当我尝试使用python脚本时,我得到了以下错误 ModuleNotFoundError: No module named 'google' 因此,我尝试安装模块 RUN pip install google-cloud-pubsub 错误 错误:命令出错,退出状态为1: 命令:/usr/bin/python3.6-c'import sys,setuptools,tokenize;sys.argv[0]=“tmp/pip-install-2

我正在尝试使用一个pupsub模拟器。它启动了,但是当我尝试使用python脚本时,我得到了以下错误

ModuleNotFoundError: No module named 'google'
因此,我尝试安装模块

RUN pip install google-cloud-pubsub
错误

错误:命令出错,退出状态为1:
命令:/usr/bin/python3.6-c'import sys,setuptools,tokenize;sys.argv[0]=“tmp/pip-install-2hyoy1ly/grpcio/setup.py”“”__文件为“'''/tmp/pip-install-2hyoy1ly/grpcio/setup.py'”;f=getattr(标记化,“'open'”,open)(\uuuuu文件);code=f.read().replace(“\r\n”“”、“\n”“”);f、 close();exec(编译(代码,uuuu文件,“'exec'))'egg\u info--egg base/tmp/pip-pip-egg-info-m25l52fe
cwd:/tmp/pip-install-2hyoy1ly/grpcio/
完整输出(11行):
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/tmp/pip-install-2hyoy1ly/grpcio/setup.py”,第191行,在
如果选中链接器,则需要\u libatomic():
文件“/tmp/pip-install-2hyoy1ly/grpcio/setup.py”,第152行,检查链接器是否需要
stderr=管道)
文件“/usr/lib/python3.6/subprocess.py”,第729行,在__
恢复信号,启动新会话)
文件“/usr/lib/python3.6/subprocess.py”,第1364行,在执行子进程中
引发子项异常类型(错误号、错误消息、错误文件名)
FileNotFoundError:[Errno 2]没有这样的文件或目录:“cc”:“cc”
----------------------------------------
错误:命令出错,退出状态为1:python setup.py egg_info检查日志以获得完整的命令输出。
错误:无法生成服务“表扬pubsub”:命令“/bin/sh-c pip install google cloud pubsub==0.24.0”返回非零代码:1
完整Dockerfile

FROM google/cloud-sdk:alpine
RUN gcloud components install pubsub-emulator

FROM openjdk:jre-alpine


ENV PYTHONUNBUFFERED=1

RUN echo "**** install Python ****" && \
    apk add --no-cache python3 && \
    if [ ! -e /usr/bin/python ]; then ln -sf python3 /usr/bin/python ; fi && \
    \
    echo "**** install pip ****" && \
    python3 -m ensurepip && \
    rm -r /usr/lib/python*/ensurepip && \
    pip3 install --no-cache --upgrade pip setuptools wheel && \
    if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi

#RUN pip install google-cloud <--- still fails when this is here
#RUN pip install Cython --install-option="--no-cython-compile" <--- still fails
RUN pip install google-cloud-pubsub
COPY --from=0 /google-cloud-sdk/platform/pubsub-emulator /pubsub-emulator
来自谷歌/云sdk:alpine
运行gcloud组件安装pubsub模拟器
来自openjdk:jre-alpine
ENV PYTHONUNBUFFERED=1
运行echo“****安装Python****”&&\
apk add——无缓存python3&&\
如果[!-e/usr/bin/python];然后ln-sf python3/usr/bin/python;金融机构及\
\
echo“****安装pip****”和\
python3-m ensurepip&\
rm-r/usr/lib/python*/ensurepip&&\
pip3安装--无缓存--升级pip设置工具控制盘\
如果[!-e/usr/bin/pip];然后ln-s-pip3/usr/bin/pip;fi

#运行pip安装googlecloud为了安装该客户端,您需要在docker容器中安装gcc。它试图使用cc命令编译库的一部分。尝试在google cloud pubsub包之前安装cython包


值得注意的是,谷歌云发布/订阅客户端库的0.24.0版本已经有三年历史了;现在已升级到1.5.0版。这个依赖性问题(以及许多其他问题)可能已经被修复,因此可能值得更新到更新的版本。

我不确定您为什么要尝试安装python3和pip3,它们都存在于基本映像中。在任何情况下,这个Dockerfile都会以一个清晰的图像为您提供python google cloud pubsub库

FROM google/cloud-sdk:alpine

RUN apk add --no-cache --virtual .build-deps \
    linux-headers build-base g++ python3-dev \
    && pip3 install --no-cache-dir google-cloud-pubsub \
    && apk del .build-deps

# add your stuff here

如果您查看问题包grpcio的可下载文件,您将看到有预编译的二进制控制盘:

那么,为什么这个构建试图从头开始编译呢?因为你用的是阿尔卑斯山。Alpine不支持二进制车轮(有关详细说明,请参阅)


正如其他人所说,您可以安装一个编译器。。。或者你可以停止使用基于阿尔卑斯山的Docker镜像,然后你就可以使用预编译的控制盘,你的构建会更快。您的图像也将更小,因为您不需要安装编译器(您可以通过多阶段构建使Alpine图像更小,但这需要更多的工作)。

我升级到pip安装--升级google cloud pubsub,我想您指的是pip安装cc。但我有一种感觉,我错了,因为错误很奇怪“你试图在Python3下运行一个非常旧的Beautiful Soup版本。这不会起作用。遗憾的是,使用最新的pubsub版本也不起作用。如果你pip安装cython呢?我也厌倦了pip安装cython--install option=“--no cython compile”并且没有效果
FROM google/cloud-sdk:alpine

RUN apk add --no-cache --virtual .build-deps \
    linux-headers build-base g++ python3-dev \
    && pip3 install --no-cache-dir google-cloud-pubsub \
    && apk del .build-deps

# add your stuff here