Czy można utworzyć pakiet w języku Python 2.7 przy użyciu __init__.pyx
(skompilowany do __init__.so
)? Jeśli tak to jak? Nie miałem szczęścia, żeby to zadziałało.Pakiet Cython z __init __. Pyx: Możliwe?
Oto co próbowałem:
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"
Powyższe ma następujący problem:
$ python -c 'import foo; foo.hello_world()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named foo
widziałem Python issue #15576 który został ustalony przez this Hg commit. Patrząc na equivalent Git commit w Git mirror repozytorium Python Hg, widzę, że commit jest osiągalny z tagu Python v2.7.5 (jak również wszystkich kolejnych wersji v2.7.x). Czy był regres?
Po prostu z ciekawości: dlaczego miałbyś to robić? – Dschoni