Python 带Cython的部分构建的构建

Python 带Cython的部分构建的构建,python,cython,buildout,Python,Cython,Buildout,我在buildout遇到了cython的问题 其中一部分是使用cython从.c文件和.pyx文件构建模块 我已经尝试了许多解决方案: 但一切都以错误告终: ImportError:没有名为Cython.Distutils的模块 当构建加载此cython模块的setup.py时,此附加 请注意,setup.py在从其自己的目录调用时以及在buildout bin目录中使用解释器时是可以工作的 感谢您的帮助。您链接的文章告诉您如何从构建安装Cython,但要做到这一点,您需要对站点软件包文

我在buildout遇到了cython的问题

其中一部分是使用cython从
.c
文件和
.pyx
文件构建模块

我已经尝试了许多解决方案:

但一切都以错误告终:

ImportError:没有名为Cython.Distutils的模块

当构建加载此cython模块的
setup.py
时,此附加

请注意,
setup.py
在从其自己的目录调用时以及在buildout bin目录中使用解释器时是可以工作的


感谢您的帮助。

您链接的文章告诉您如何从构建安装Cython,但要做到这一点,您需要对
站点软件包
文件夹进行写访问。有3种方法可以运行这些构建:

  • 以root用户身份运行它,并将Cython安装到python的系统中 网站包。通常,您希望避免这样做

  • 编译自己的Python。如果您愿意,这可能是唯一的选择 使用系统上尚未安装的Python版本。有 将允许您生成任何版本的 Python从内部构建

  • 使用。这将(在buildout文件夹中)创建一个 完整的Python虚拟环境,包括您自己的
    站点包
    文件夹。这通常是运行数据库的最佳方式 可以使用系统Python(或任何其他 您已经安装了系统范围的)


  • 我建议您将使用
    virtualenv
    作为软件安装说明的一部分。

    没有办法将此作为一个单一步骤来完成,但可以将其作为两个步骤来完成

    使用:

    之所以可能,是因为buildout支持一个无人提及的模糊选项“install”,但您可以使用它,如下所示:

    [buildout]
    parts = deps py   # <---- Notice we don't depend on cython here
    eggs =
      whatever
      kdist
      nark
      kivy # <--- But we do have a module that requires cython to build
    develop =
      .
      lib/nark
      lib/kivy-dist
    
    [cython] # <---- By calling ./bin/buildout install cython we trigger this
    recipe = zc.recipe.egg:script
    parts = cython-py
    interpreter = cpy # <--- Which makes our dummy ./bin/cpy 
    eggs =
      cython
      pyinstaller
    
    [deps]
    recipe = zc.recipe.egg:eggs
    eggs = ${buildout:eggs}
    
    [py]
    recipe = zc.recipe.egg:script
    interpreter = py
    eggs = ${buildout:eggs}
    
    $ ls bin/
    buildout garden   py
    
    没有可能或不可能在virtualenv中挂起并在以后把事情搞砸的遗留软件包。这就是为什么我们首先要使用buildout,对吗

    …当然,如果你想让cython闲逛,也可以把它放在顶部的依赖项中

    我今天找到了这个食谱 这就解决了问题

    这可以通过使用扩展配方安装cython来解决问题,因此在buildout run
    setup.py develope


    问题是在没有将cython作为系统级安装的情况下构建cython模块。

    您确定cython已正确安装,并且已将
    PYTHONPATH
    环境变量设置为包含cython模块所在的目录?您是指在系统级吗?这将使此构建无法在没有cython的系统上部署?你说的“系统级”是什么意思?我指的是安装在
    站点包中的
    。感谢您查看我的问题。好吧,您需要将其安装在某个地方,或者安装在
    /usr/local/lib/python2.X/site packages
    中,或者安装在您的homedir中。在后一种情况下,
    PYTHONPATH
    必须正确设置。感谢您的建议,我将以这种方式挖掘。我觉得答案很好。OP用相关的解决方案和背景回答自己的问题。OP在原始问题几年后回来提供答案的事实非常符合StackOverflow的精神,值得投票。参见相关XKCD:@HåkenLid:说得好,我也投了赞成票。@OP:您也可以接受您的答案:-)So cool不知道该参数,这是我正在寻找的缺失部分(在运行buildout时不要总是重建所有零件)。格雷西亚斯!
    $ ls bin/
    buildout garden   py