Python Docker:如何运行cython_扩展?

Python Docker:如何运行cython_扩展?,python,docker,cython,Python,Docker,Cython,最后一行与以下内容崩溃: FROM ubuntu:14.04.2 RUN rm /bin/sh && ln -s /bin/bash /bin/sh RUN apt-get -y update && apt-get upgrade -y RUN apt-get install python build-essential python-dev python-pip python-setuptools -y RUN apt-get install libxml2-d

最后一行与以下内容崩溃:

FROM ubuntu:14.04.2
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get -y update && apt-get upgrade -y
RUN apt-get install python build-essential python-dev python-pip python-setuptools -y
RUN apt-get install libxml2-dev libxslt1-dev python-dev -y
RUN apt-get install libpq-dev postgresql-common postgresql-client -y
RUN apt-get install openssl openssl-blacklist openssl-blacklist-extra -y
RUN apt-get install nginx -y
RUN pip install "pip>=7.0"
RUN pip install virtualenv uwsgi

ADD canonicaliser_api /home/ubuntu/canonicaliser_api
RUN virtualenv /home/ubuntu/canonicaliser_api/venv
RUN source /home/ubuntu/canonicaliser_api/venv/bin/activate && pip install -r /home/ubuntu/canonicaliser_api/requirements.txt
RUN export CFLAGS=-I/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include/
RUN source /home/ubuntu/canonicaliser_api/venv/bin/activate && \
    python /home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions/setup.py \
      build_ext --inplace
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/canonicaliser\u api/canonicaliser/cython\u extensions/setup.py”,第5行,在
ext_modules=cythonize(*.pyx)
cythonize中的文件“/home/ubuntu/canonicaliser_api/venv/local/lib/python2.7/site packages/Cython/Build/Dependencies.py”,第754行
别名=别名)
文件“/home/ubuntu/canonicaliser\u api/venv/local/lib/python2.7/site packages/Cython/Build/Dependencies.py”,第649行,在创建扩展名列表中
对于非空文件(扩展的iglob(filepattern))“'%s'与任何文件“%filepattern”都不匹配:
文件“/home/ubuntu/canonicaliser_api/venv/local/lib/python2.7/site packages/Cython/Build/Dependencies.py”,第103行,非空
提升值错误(错误消息)
ValueError:“*.pyx”与任何文件都不匹配
...
请问我遗漏了什么?

我发现了问题

  • I到Cython 0.21(这是 有问题的错误)

  • 后来我遇到了另一个问题,因为脚本没有生成 任何事情,尽管没有抛出任何错误。解决这个问题的方法是在执行它之前先将其放在那个目录中

  • e、 g:


    Docker最痛苦的部分似乎是你必须链接所有命令,因为它似乎是无状态的。

    当你调用
    setup.py
    时,也许你需要在
    cython\u extensions
    目录下?
      Traceback (most recent call last):
      File "/home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions/setup.py", line 5, in <module>
        ext_modules = cythonize("*.pyx")
      File "/home/ubuntu/canonicaliser_api/venv/local/lib/python2.7/site-packages/Cython/Build/Dependencies.py", line 754, in cythonize
        aliases=aliases)
      File "/home/ubuntu/canonicaliser_api/venv/local/lib/python2.7/site-packages/Cython/Build/Dependencies.py", line 649, in create_extension_list
        for file in nonempty(extended_iglob(filepattern), "'%s' doesn't match any files" % filepattern):
      File "/home/ubuntu/canonicaliser_api/venv/local/lib/python2.7/site-packages/Cython/Build/Dependencies.py", line 103, in nonempty
        raise ValueError(error_msg)
    ValueError: '*.pyx' doesn't match any files
    ...
    
    RUN source /home/ubuntu/canonicaliser_api/venv/bin/activate && cd /home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions/ && python setup.py build_ext --inplace