我在buildout中面临cython的问题。
其中一个部分是使用来自.c
文件和.pyx
文件的cython的模块构建。
我已经尝试了很多解决方案:
但所有结果都有错误:
ImportError: No module named Cython.Distutils
当buildout加载此cython模块的setup.py
时,这会附加。
请注意,setup.py
在从其自己的目录调用并且在buildout bin目录中使用解释器时可以正常工作。
感谢您的帮助。
答案 0 :(得分:4)
您链接的文章告诉您如何从buildout安装Cython,但要做到这一点,您需要对site-packages
文件夹的写入权限。您应该有3种方法来运行这些扩建:
以root身份运行并将Cython安装到系统python中 站点包。通常你想避免这样做。
编译自己的Python。如果您愿意,这可能是唯一的选择 使用系统中尚未安装的Python版本。有 buildout配置,可以让你构建任何版本的 来自buildout内部的Python。
使用virtualenv
。这将创建(在buildout文件夹中)a
完整的Python虚拟环境,包括您自己的
site-packages
文件夹。这通常是运行a的最佳方式
可以使用系统Python(或任何其他Python)的buildout
你已经安装了系统范围。)
我建议您使用virtualenv
部分软件安装说明。
答案 1 :(得分:2)
我今天发现了这个食谱 https://pypi.python.org/pypi/mr.cython/1.0 这解决了问题。
这可以通过安装带有扩展配方的cython解决问题,以便在buildout运行时可用setup.py develop
问题是在没有安装cython作为系统级别的情况下构建cython模块。
答案 2 :(得分:1)
单步没有办法做到这一点,但作为一个两步过程很容易做到。
使用:
python bootstrap.py
./bin/buildout install cython
./bin/cpy bootstrap.py
./bin/cpy ./bin/buildout
这是可能的原因是因为buildout支持一个不起眼的选项'安装'没有人会谈论,但你可以使用它,就像这样:
[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}
关于这种方法的可爱之处是第二次运行buildout 清除bin目录所以在一天结束时,你留下了一个看起来像这样的bin目录:
$ ls bin/
buildout garden py
没有剩余的软件包可能会或可能不会在你的virtualenv中徘徊,并在以后搞砸了。这就是为什么我们首先使用buildout吧?
...当然,如果你想让cython闲逛,juts也会把它粘在顶部的依赖关系中。