Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.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
如何在alpine docker映像中为orjson python库构建设置rust toolchain?_Python_Docker_Rust_Alpine_Orjson - Fatal编程技术网

如何在alpine docker映像中为orjson python库构建设置rust toolchain?

如何在alpine docker映像中为orjson python库构建设置rust toolchain?,python,docker,rust,alpine,orjson,Python,Docker,Rust,Alpine,Orjson,我一直在努力解决这个问题,我需要一些帮助。我正在尝试为我的python应用程序创建一个docker映像。我的应用程序使用的是用于python的快速JSON库。这个库的一部分是用rust构建的,所以我需要rust工具链。现在最重要的是,我正在使用阿尔卑斯山,因为它占地面积小,所以它没有包括任何标准工具。我需要自己安排一下 这是我的Dockerfile来模拟这个问题 FROM python:3.7-alpine # for orjson in requirements.txt RUN apk ad

我一直在努力解决这个问题,我需要一些帮助。我正在尝试为我的python应用程序创建一个docker映像。我的应用程序使用的是用于python的快速JSON库。这个库的一部分是用rust构建的,所以我需要rust工具链。现在最重要的是,我正在使用阿尔卑斯山,因为它占地面积小,所以它没有包括任何标准工具。我需要自己安排一下

这是我的Dockerfile来模拟这个问题

FROM python:3.7-alpine

# for orjson in requirements.txt
RUN apk add rust cargo


RUN pip install orjson
这是我面临的错误消息

Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM python:3.7-alpine
 ---> 6a5ca85ed89b
Step 2/3 : RUN apk add rust cargo
 ---> Running in b86315a52e50
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/19) Installing rust-stdlib (1.43.1-r1)
(2/19) Installing libgcc (9.3.0-r2)
(3/19) Installing libstdc++ (9.3.0-r2)
(4/19) Installing binutils (2.34-r1)
(5/19) Installing gmp (6.2.0-r0)
(6/19) Installing isl (0.18-r0)
(7/19) Installing libgomp (9.3.0-r2)
(8/19) Installing libatomic (9.3.0-r2)
(9/19) Installing libgphobos (9.3.0-r2)
(10/19) Installing mpfr4 (4.0.2-r4)
(11/19) Installing mpc1 (1.1.0-r1)
(12/19) Installing gcc (9.3.0-r2)
(13/19) Installing musl-dev (1.1.24-r8)
(14/19) Installing libxml2 (2.9.10-r4)
(15/19) Installing llvm10-libs (10.0.0-r2)
(16/19) Installing rust (1.43.1-r1)
(17/19) Installing nghttp2-libs (1.41.0-r0)
(18/19) Installing libcurl (7.69.1-r0)
(19/19) Installing cargo (1.43.1-r1)
Executing busybox-1.31.1-r16.trigger
OK: 334 MiB in 54 packages
Removing intermediate container b86315a52e50
 ---> 07671da6f533
Step 3/3 : RUN pip install orjson
 ---> Running in 9c72ff2b2e3e
Collecting orjson
  Downloading orjson-3.0.2.tar.gz (649 kB)
  Installing build dependencies: started
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python /usr/local/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpxhkdxsol
         cwd: /tmp/pip-install-0x1gorur/orjson
    Complete output (14 lines):
    Please follow this github issue discussion to get more clarity on it.

Dockerfile

FROM alpine:3.10
RUN echo "https://dl-3.alpinelinux.org/alpine/v3.10/main" >> /etc/apk/repositories
RUN echo "https://dl-3.alpinelinux.org/alpine/v3.10/community" >> /etc/apk/repositories
RUN apk add --no-cache python3 gcompat patchelf
RUN patchelf --add-needed libgcompat.so.0 /usr/bin/python3.7
RUN echo 'manylinux1_compatible = True' > /usr/lib/python3.7/_manylinux.py &&\
    pip3 install orjson &&\
    rm /usr/lib/python3.7/_manylinux.py
将生成上下文发送到Docker守护程序2.048kB
步骤1/3:来自python:3.7-1
--->6a5ca85ed89b
步骤2/3:运行apk添加生锈货物
--->在b86315a52e50中运行
取来http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
取来http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/19)安装防锈stdlib(1.43.1-r1)
(2/19)安装libgcc(9.3.0-r2)
(3/19)安装libstdc++(9.3.0-r2)
(4/19)安装binutils(2.34-r1)
(5/19)安装gmp(6.2.0-r0)
(6/19)安装isl(0.18-r0)
(7/19)安装libgomp(9.3.0-r2)
(8/19)安装libatomic(9.3.0-r2)
(9/19)安装libgphobos(9.3.0-r2)
(10/19)安装mpfr4(4.0.2-r4)
(11/19)安装mpc1(1.1.0-r1)
(12/19)安装通用条款(9.3.0-r2)
(13/19)安装musl设备(1.1.24-r8)
(14/19)安装libxml2(2.9.10-r4)
(15/19)安装llvm10 libs(10.0.0-r2)
(16/19)安装铁锈(1.43.1-r1)
(17/19)安装nghttp2 LIB(1.41.0-r0)
(18/19)安装libcurl(7.69.1-r0)
(19/19)安装货物(1.43.1-r1)
执行busybox-1.31.1-r16.trigger
好的:334个MiB,54个包
拆卸中间容器b86315a52e50
--->07671da6f533
步骤3/3:运行pip安装或JSON
--->在9c72ff2b2e3e中运行
收集orjson
下载orjson-3.0.2.tar.gz(649KB)
安装生成依赖项:已开始
正在安装生成依赖项:仍在运行。。。
正在安装生成依赖项:仍在运行。。。
正在安装生成依赖项:仍在运行。。。
正在安装生成依赖项:仍在运行。。。
正在安装生成依赖项:仍在运行。。。
安装生成依赖项:已完成,状态为“完成”
获取构建控制盘的需求:已开始
获取构建控制盘的要求:完成状态为“完成”
准备控制盘元数据:已开始
准备控制盘元数据:已完成,状态为“错误”
错误:命令出错,退出状态为1:
命令:/usr/local/bin/python/usr/local/lib/python3.7/site-packages/pip//u vendor/pep517//u in\u process.py为构建轮准备元数据/tmp/tmpxhkdxsol
cwd:/tmp/pip-install-0x1gorur/orjson
完整输出(14行):
请遵循此讨论以获得更清晰的信息

Dockerfile

FROM python:3.7-alpine3.11

RUN echo "https://dl-3.alpinelinux.org/alpine/v3.11/main" >> /etc/apk/repositories
RUN echo "https://dl-3.alpinelinux.org/alpine/v3.11/community" >> /etc/apk/repositories
RUN apk add --no-cache python3 gcompat patchelf
RUN patchelf --add-needed libgcompat.so.0 /usr/bin/python3
RUN echo 'manylinux1_compatible = True' > /usr/local/lib/python3.7/_manylinux.py &&\
pip3 install orjson &&\
rm /usr/local/lib/python3.7/_manylinux.py

多亏了@nitishkumar singh的回应,我成功地让它发挥了作用。这篇文章中有一些错误,如果有人遇到这个问题,这里是我的Dockerfile


您不应该直接安装
rust
cargo
,而应该安装并使用它来安装和配置所需的rust工具链
或JSON
如果不适用于稳定版本的rust,您需要安装夜间版本。如@MindSwipe所说,安装
rustup
,然后每晚运行
rustup工具链add;Rustop default nightly
将rust安装更改为使用Rustop,但存在相同的问题。