`pip3 install grpcio` 在 Alpine Linux 上失败

dmj*_*mjy 3 python pip alpine-linux grpcio

我在 Mac (12.3.1) 上使用 Docker 的 Alpine Linux 并尝试运行pip3 install grpcio但此命令总是失败。

\n

我在这里尝试了信息,但到目前为止没有任何效果。
\n无法使用 pip install grpcio 安装 grpcio --> 升级到最新版setuptools\n https://github.com/grpc/grpc/issues/24390 --> 运行export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1

\n

\n
    \n
  1. 使用此 Dockerfile 构建映像。
  2. \n
\n

Dockerfile

\n
FROM alpine:latest\nCOPY src /root/src # Please think this is empty. I don\'t use any files in this directory until now.\nWORKDIR /root/src\n\nRUN set -x \\\n    && apk update \\\n    && apk add build-base \\\n    && apk add python3 py3-pip python3-dev \\\n    && pip3 install --no-cache --upgrade pip setuptools \\\n    && pip3 install wheel\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 使用docker run进入图像。

    \n
  2. \n
  3. 跑步pip3 list以检查已安装的内容。

    \n
  4. \n
\n
~/src # pip3 list\nPackage            Version\n------------------ ---------\nappdirs            1.4.4\nCacheControl       0.12.10\ncertifi            2020.12.5\ncharset-normalizer 2.0.7\ncolorama           0.4.4\ncontextlib2        21.6.0\ndistlib            0.3.3\ndistro             1.6.0\nhtml5lib           1.1\nidna               3.3\nlockfile           0.12.2\nmsgpack            1.0.2\nordered-set        4.0.2\npackaging          20.9\npep517             0.12.0\npip                22.1.1\nprogress           1.6\npyparsing          2.4.7\nrequests           2.26.0\nretrying           1.3.3\nsetuptools         62.3.2\nsix                1.16.0\ntoml               0.10.2\ntomli              1.2.2\nurllib3            1.26.7\nwebencodings       0.5.1\nwheel              0.37.1\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 跑步pip3 install grpcio
  2. \n
\n

该错误消息太长,无法写在这个问题中。请检查 Google 文档以获取完整消息。\n https://docs.google.com/document/d/1ATyMCA0vRAsxfDquByeWh7cE7InhPCG6bDsgtDEG2Ls/edit?usp=sharing \n https://docs.google.com/document/d/19erFzIcB2zCDbCklyeOGDVNUBTf6I8oW4B-sNWuO6Zk /编辑?usp=共享

\n

错误信息(最后一部分)

\n
(There are messages before this part. Please check Google Docs.)\n      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -g -fno-semantic-interposition -g -fno-semantic-interposition -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -D_WIN32_WINNT=1536 -DGRPC_XDS_USER_AGENT_NAME_SUFFIX=\\"Python\\" -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX=\\"1.46.3\\" -DGPR_BACKWARDS_COMPATIBILITY_MODE=1 -DHAVE_CONFIG_H=1 -DGRPC_ENABLE_FORK_SUPPORT=1 "-DPyMODINIT_FUNC=extern \\"C\\" __attribute__((visibility (\\"default\\"))) PyObject*" -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 -Isrc/python/grpcio -Iinclude -I. -Ithird_party/abseil-cpp -Ithird_party/address_sorting/include -Ithird_party/cares/cares/include -Ithird_party/cares -Ithird_party/cares/cares -Ithird_party/cares/config_linux -Ithird_party/re2 -Ithird_party/boringssl-with-bazel/src/include -Ithird_party/upb -Isrc/core/ext/upb-generated -Isrc/core/ext/upbdefs-generated -Ithird_party/xxhash -Ithird_party/zlib -I/usr/include/python3.9 -c third_party/cares/cares/src/lib/ares_process.c -o python_build/temp.linux-aarch64-cpython-39/third_party/cares/cares/src/lib/ares_process.o -std=c++11 -std=gnu99 -fvisibility=hidden -fno-wrapv -fno-exceptions -pthread\n      cc1: warning: command-line option \'-std=c++11\' is valid for C++/ObjC++ but not for C\n      creating None/tmp/tmp_x4urxfk\n      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -g -fno-semantic-interposition -g -fno-semantic-interposition -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/python3.9 -c /tmp/tmp_x4urxfk/a.c -o None/tmp/tmp_x4urxfk/a.o\n      Traceback (most recent call last):\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/unixccompiler.py", line 173, in _compile\n          self.spawn(compiler_so + cc_args + [src, \'-o\', obj] +\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/_spawn_patch.py", line 54, in _commandfile_spawn\n          _classic_spawn(self, command)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/ccompiler.py", line 917, in spawn\n          spawn(cmd, dry_run=self.dry_run, **kwargs)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/spawn.py", line 68, in spawn\n          raise DistutilsExecError(\n      distutils.errors.DistutilsExecError: command \'/usr/bin/gcc\' failed with exit code 1\n      \n      During handling of the above exception, another exception occurred:\n      \n      Traceback (most recent call last):\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/commands.py", line 280, in build_extensions\n          build_ext.build_ext.build_extensions(self)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 448, in build_extensions\n          self._build_extensions_serial()\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 473, in _build_extensions_serial\n          self.build_extension(ext)\n        File "/usr/lib/python3.9/site-packages/setuptools/command/build_ext.py", line 202, in build_extension\n          _build_ext.build_extension(self, ext)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 528, in build_extension\n          objects = self.compiler.compile(sources,\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/_parallel_compile_patch.py", line 58, in _parallel_compile\n          multiprocessing.pool.ThreadPool(BUILD_EXT_COMPILER_JOBS).map(\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 364, in map\n          return self._map_async(func, iterable, mapstar, chunksize).get()\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 771, in get\n          raise self._value\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 125, in worker\n          result = (True, func(*args, **kwds))\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 48, in mapstar\n          return list(map(*args))\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/_parallel_compile_patch.py", line 54, in _compile_single_file\n          self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/unixccompiler.py", line 176, in _compile\n          raise CompileError(msg)\n      distutils.errors.CompileError: command \'/usr/bin/gcc\' failed with exit code 1\n      \n      During handling of the above exception, another exception occurred:\n      \n      Traceback (most recent call last):\n        File "<string>", line 2, in <module>\n        File "<pip-setuptools-caller>", line 34, in <module>\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/setup.py", line 527, in <module>\n          setuptools.setup(\n        File "/usr/lib/python3.9/site-packages/setuptools/__init__.py", line 87, in setup\n          return distutils.core.setup(**attrs)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 148, in setup\n          return run_commands(dist)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 163, in run_commands\n          dist.run_commands()\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 967, in run_commands\n          self.run_command(cmd)\n        File "/usr/lib/python3.9/site-packages/setuptools/dist.py", line 1229, in run_command\n          super().run_command(command)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 986, in run_command\n          cmd_obj.run()\n        File "/usr/lib/python3.9/site-packages/setuptools/command/install.py", line 68, in run\n          return orig.install.run(self)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/install.py", line 670, in run\n          self.run_command(\'build\')\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 313, in run_command\n          self.distribution.run_command(command)\n        File "/usr/lib/python3.9/site-packages/setuptools/dist.py", line 1229, in run_command\n          super().run_command(command)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 986, in run_command\n          cmd_obj.run()\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build.py", line 136, in run\n          self.run_command(cmd_name)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 313, in run_command\n          self.distribution.run_command(command)\n        File "/usr/lib/python3.9/site-packages/setuptools/dist.py", line 1229, in run_command\n          super().run_command(command)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 986, in run_command\n          cmd_obj.run()\n        File "/usr/lib/python3.9/site-packages/setuptools/command/build_ext.py", line 79, in run\n          _build_ext.run(self)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 339, in run\n          self.build_extensions()\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/commands.py", line 284, in build_extensions\n          raise CommandError(\n      commands.CommandError: Failed `build_ext` step:\n      Traceback (most recent call last):\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/unixccompiler.py", line 173, in _compile\n          self.spawn(compiler_so + cc_args + [src, \'-o\', obj] +\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/_spawn_patch.py", line 54, in _commandfile_spawn\n          _classic_spawn(self, command)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/ccompiler.py", line 917, in spawn\n          spawn(cmd, dry_run=self.dry_run, **kwargs)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/spawn.py", line 68, in spawn\n          raise DistutilsExecError(\n      distutils.errors.DistutilsExecError: command \'/usr/bin/gcc\' failed with exit code 1\n      \n      During handling of the above exception, another exception occurred:\n      \n      Traceback (most recent call last):\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/commands.py", line 280, in build_extensions\n          build_ext.build_ext.build_extensions(self)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 448, in build_extensions\n          self._build_extensions_serial()\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 473, in _build_extensions_serial\n          self.build_extension(ext)\n        File "/usr/lib/python3.9/site-packages/setuptools/command/build_ext.py", line 202, in build_extension\n          _build_ext.build_extension(self, ext)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 528, in build_extension\n          objects = self.compiler.compile(sources,\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/_parallel_compile_patch.py", line 58, in _parallel_compile\n          multiprocessing.pool.ThreadPool(BUILD_EXT_COMPILER_JOBS).map(\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 364, in map\n          return self._map_async(func, iterable, mapstar, chunksize).get()\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 771, in get\n          raise self._value\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 125, in worker\n          result = (True, func(*args, **kwds))\n        File "/usr/lib/python3.9/multiprocessing/pool.py", line 48, in mapstar\n          return list(map(*args))\n        File "/tmp/pip-install-dddnrveo/grpcio_87c868971a7943939c5252f5c860ad57/src/python/grpcio/_parallel_compile_patch.py", line 54, in _compile_single_file\n          self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)\n        File "/usr/lib/python3.9/site-packages/setuptools/_distutils/unixccompiler.py", line 176, in _compile\n          raise CompileError(msg)\n      distutils.errors.CompileError: command \'/usr/bin/gcc\' failed with exit code 1\n      \n      [end of output]\n  \n  note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: legacy-install-failure\n\n\xc3\x97 Encountered error while trying to install package.\n\xe2\x95\xb0\xe2\x94\x80> grpcio\n\nnote: This is an issue with the package mentioned above, not pip.\nhint: See above for output from the failure.\n
Run Code Online (Sandbox Code Playgroud)\n

Ala*_*lan 7

默认情况下不安装 Alpine Linux 的构建环境。

您需要安装头文件 - apk add linux-headers.

这是在这个 github 问题中找到的:grpcio can't beinstalled on alpine