2017-04-01 2 views
1

J'ai le Dockerfile suivant, où j'essaie de compiler Twisted avec Python 3.6 en tant que cible.Compilation Twisted sur Alpine Linux pour Python 3.6

FROM alpine:3.5 

RUN apk --update add \ 
     build-base libffi-dev openssl-dev python3-dev \ 
     libffi openssl ca-certificates python3 
RUN apk add \ 
     py-pip \ 
     py-lxml \ 
     py-pillow 
RUN \ 
    pip 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"] 

Mon problème est que je reçois l'erreur suivante, après Twisted a été copié:

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 

Il semble donc que quelque chose dans Twisted fait référence aux en-têtes Python 2.7, que j'ai pas installé, car je ne prévois pas de cibler cette version.

Je ne trouve pas de version spéciale du téléchargement Twisted ciblant Python 3.6.

J'appartiens à ceux qui s'en tiennent à 2.7 principalement à cause de Twisted, et j'essayais juste de me mouiller les pieds avec 3.6, alors gardez cela à l'esprit quand vous répondez. Je voulais juste vérifier si mon code fonctionne sur 3.6, quelles modifications je vais devoir faire. Mais compiler Twisted est ma première barrière.

Répondre

2

Le package py-pip que vous installez est destiné à python 2.x. Pour cette raison, lorsque vous appelez pip install ..., vous installez des packages pour python 2.x.

Les paquets python3 fournit une commande pip3 pour python 3. En général, py-<something> est pour Python 2.x et py3-<something> est pour Python 3.x. En d'autres termes:

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"]