Можно ли создать пакет Python 2.7, используя __init__.pyx
(скомпилированный в __init__.so
)? Если да, то как? Мне не повезло заставить его работать.
Вот что я пробовал:
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"
Вышеприведенное имеет следующее поведение:
$ python -c 'import foo; foo.hello_world()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named foo
Я видел ошибку Python №15576, которая была исправлена эта фиксация Hg. Глядя на эквивалентную фиксацию Git в Git зеркало репозитория Python Hg, я вижу, что фиксация доступна из тега Python v2.7.5 (а также всех последующих версий v2.7.x). Был ли регресс?