Ist es möglich, ein Python 2.7-Paket mit __init__.pyx
(kompiliert zu __init__.so
) zu erstellen? Wenn das so ist, wie? Ich hatte kein Glück, es zur Arbeit zu bringen. HierCython-Paket mit __init __. Pyx: Möglich?
ist, was ich versucht habe:
setup.py
:#!/usr/bin/env python from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext foo = Extension(name='foo.__init__', sources=['foo/__init__.pyx']) bar = Extension(name='foo.bar', sources=['foo/bar.pyx']) setup(name='foo', packages = ['foo'], cmdclass={'build_ext':build_ext}, ext_modules = [foo, bar])
foo/__init__.pyx
:import foo.bar cpdef hello_world(): print "hello world" foo.bar.blah()
foo/bar.pyx
:cpdef blah(): print "blah"
Die oben hat folgendes Verhalten:
$ python -c 'import foo; foo.hello_world()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named foo
ich Python issue #15576 sah, die von this Hg commit wurde behoben. Betrachtet man die equivalent Git commit in der Git mirror des Python Hg Repository, sehe ich, dass das Commit von der Python v2.7.5-Tag (sowie alle nachfolgenden v2.7.x-Versionen) erreichbar ist. Gab es eine Regression?
Nur aus Neugier: Warum sollten Sie das tun? – Dschoni