dmj*_*mjy 3 python pip alpine-linux grpcio
我在 Mac (12.3.1) 上使用 Docker 的 Alpine Linux 并尝试运行pip3 install grpcio但此命令总是失败。
我在这里尝试了信息,但到目前为止没有任何效果。
\n无法使用 pip install grpcio 安装 grpcio --> 升级到最新版setuptools\n https://github.com/grpc/grpc/issues/24390 --> 运行export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1并export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1
步
\nDockerfile
\nFROM 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\nRun Code Online (Sandbox Code Playgroud)\n使用docker run进入图像。
跑步pip3 list以检查已安装的内容。
~/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\nRun Code Online (Sandbox Code Playgroud)\npip3 install grpcio该错误消息太长,无法写在这个问题中。请检查 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.\nRun Code Online (Sandbox Code Playgroud)\n
默认情况下不安装 Alpine Linux 的构建环境。
您需要安装头文件 - apk add linux-headers.
这是在这个 github 问题中找到的:grpcio can't beinstalled on alpine