在Alpine Linux for Python 3.6上编译Twisted

时间:2017-04-01 23:52:21

标签: linux twisted python-3.6

我有以下Dockerfile,我正在尝试使用Python 3.6编译Twisted作为目标。

gcc -fno-strict-aliasing -Os
  -fomit-frame-pointer -g -DNDEBUG -Os -fomit-frame-pointer
  -g -fPIC -I/usr/include/python2.7 -c src/twisted/test/raiser.c
  -o build/temp.linux-x86_64-2.7/src/twisted/test/raiser.o 
  src/twisted/test/raiser.c:4:20: fatal error: Python.h: No such file or 
  directory

我的问题是,在复制Twisted后,我收到以下错误:

tmp

所以看来Twisted中的某些内容指的是我没有安装的Python 2.7标头,因为我不打算定位该版本。

我找不到针对Python 3.6的Twisted下载的特殊版本。

我属于那些坚持2.7的人,主要是因为Twisted,我只是想用3.6弄湿我的脚,所以在回答时要记住这一点。我只是想检查我的代码是否在3.6上运行,我将要进行哪些修改。但编译Twisted是我的第一道屏障。

1 个答案:

答案 0 :(得分:3)

您正在安装的py-pip软件包适用于python 2.x.因此,当您调用pip install ...时,您正在为python 2.x安装软件包。

python3包为python 3提供pip3命令。通常,py-<something>用于Python 2.x,py3-<something>用于Python 3.x.换句话说:

FROM alpine:3.5

RUN apk --update add \
      build-base libffi-dev openssl-dev python3-dev \
      libffi openssl ca-certificates python3
RUN apk add \
      py3-lxml \
      py3-pillow
RUN \
    pip3 install --upgrade python-dateutil \
                          arrow \
                          pytz \
                          zope.interface \
                          https://files.pythonhosted.org/packages/source/T/Twisted/Twisted-17.1.0.tar.bz2 \
                          jinja2
RUN \
    apk del build-base libffi-dev openssl-dev python3-dev && \
    rm -rf /var/cache/apk/* && \
    rm -rf ~/.cache/ && \
    adduser -D -u 1001 noroot

USER noroot

CMD ["/bin/sh"]