나는 파이썬 패키지 simplerandom
( BitBucket repo- 편집 : 이제 github 에서 직접 수행했습니다 . ) 이것이 인기있는 패키지가 될 것이라고 기대하지는 않지만 Cython을 배울 수있는 좋은 기회였습니다).
이 방법은 (적어도 Cython 버전 0.14로) .pyx
파일 을 빌드하는 Cython.Distutils.build_ext
것이 항상 .c
소스와 동일한 디렉토리에 파일 을 만드는 것처럼 보인다 는 사실에 의존합니다..pyx
파일 합니다.
다음은 setup.py
필수 사항을 보여주는 축소 버전입니다 .
from distutils.core import setup
from distutils.extension import Extension
try:
from Cython.Distutils import build_ext
except ImportError:
use_cython = False
else:
use_cython = True
cmdclass = {}
ext_modules = []
if use_cython:
ext_modules += [
Extension("mypackage.mycythonmodule", ["cython/mycythonmodule.pyx"]),
]
cmdclass.update({'build_ext': build_ext})
else:
ext_modules += [
Extension("mypackage.mycythonmodule", ["cython/mycythonmodule.c"]),
]
setup(
name='mypackage',
...
cmdclass=cmdclass,
ext_modules=ext_modules,
...
)
또한 소스 배포 (로 생성 된 소스 배포)에 포함 MANIFEST.in
되도록 편집 했습니다 .mycythonmodule.c
python setup.py sdist
...
recursive-include cython *
...
mycythonmodule.c
버전 관리 '트렁크'(또는 Mercurial의 경우 '기본값')에 전념하지 않습니다 . 릴리스를 만들 때 소스 코드 배포를 위해 최신 상태로 존재 python setup.py build_ext
하는지 확인하기 위해 첫 번째 작업을 수행해야합니다 mycythonmodule.c
. 릴리스 브랜치를 만들고 C 파일을 브랜치에 커밋합니다. 그렇게하면 해당 릴리스와 함께 배포 된 C 파일의 기록 기록이 있습니다.