পাইথন প্যাকেজে আমি নিজেই এখন এটি করেছি simplerandom( বিটবকেট রেপো - এডিআইটি: এখন গিথুব ) (আমি এটি একটি জনপ্রিয় প্যাকেজ হওয়ার আশা করি না, তবে সাইথন শিখার জন্য এটি একটি ভাল সুযোগ ছিল)।
এই পদ্ধতি যে একটি বিল্ডিং উপর নির্ভর .pyxসাহায্যে ফাইল Cython.Distutils.build_ext(অন্তত Cython সংস্করণ 0.14 সহ) সবসময় একটি তৈরি বলে মনে হয় .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সংস্করণ নিয়ন্ত্রণ 'ট্রাঙ্ক' (বা মার্চুরিয়ালের জন্য 'ডিফল্ট') প্রতিশ্রুতিবদ্ধ না। আমি যখন প্রকাশ করি তখন উত্স কোড বিতরণের জন্য তা উপস্থিত এবং যুগোপযোগী python setup.py build_extতা নিশ্চিত করার জন্য আমাকে প্রথমে কিছু করতে হবে remember mycythonmodule.cআমি একটি রিলিজ শাখাও করি, এবং সি ফাইলটি শাখায় প্রতিশ্রুতিবদ্ধ করি। সেভাবে আমার কাছে সি ফাইলের একটি historicalতিহাসিক রেকর্ড রয়েছে যা সেই রিলিজের সাথে বিতরণ করা হয়েছিল।