Возможно ли создать пакет 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 commit. Глядя на эквивалентный Git commit в Git зеркало в хранилище Python Hg, я вижу что фиксация достижима из тега Python v2.7.5 (а также всех последующих версий v2.7.x). Был ли регресс?