cython
साइथन बंडलिंग
खोज…
पायथन इंस्टॉलर का उपयोग करके साइथॉन प्रोग्राम को बंडलिंग करना
एंट्रीपॉइंट के साथ साइथन प्रोग्राम से शुरू करें:
def do_stuff():
cdef int a,b,c
a = 1
b = 2
c = 3
print("Hello World!")
print([a,b,c])
input("Press Enter to continue.")
उसी फ़ोल्डर में एक setup.py फ़ाइल बनाएं:
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = "Hello World",
ext_modules = cythonize('program.pyx'),
)
python setup.py build_ext --inplace साथ इसे चलाने से python setup.py build_ext --inplace सबफ़ोल्डर में एक .pyd लाइब्रेरी का उत्पादन करेगा।
उसके बाद, लाइब्रेरी का उपयोग करके एक वेनिला पायथन स्क्रिप्ट बनाएं (उदाहरण के लिए, main.py ) और इसके पास .pyd फ़ाइल .pyd :
import program
program.do_stuff()
PyInstaller का उपयोग करके इसे pyinstaller --onefile "main.py" बंडल करें। यह एक सबफ़ोल्डर बना देगा जिसमें 4 एमबी + आकार का निष्पादन होगा जिसमें लाइब्रेरी प्लस पायथन रनटाइम होगा।
स्वचालित निर्माण (विंडोज़)
Windows में उपरोक्त प्रक्रिया के स्वचालन के लिए समान सामग्री के .bat का उपयोग करें:
del "main.exe"
python setup.py build_ext --inplace
del "*.c"
rmdir /s /q ".\build"
pyinstaller --onefile "main.py"
copy /y ".\dist\main.exe" ".\main.exe"
rmdir /s /q ".\dist"
rmdir /s /q ".\build"
del "*.spec"
del "*.pyd"
गठ्ठर में नम्पी जोड़ना
Numpy बंडल को जोड़ने के लिए, संशोधित setup.py साथ include_dirs कीवर्ड और आवश्यक आयात numpy में पायथॉन लिपि आवरण Pyinstaller सूचित करने के लिए।
program.pyx :
import numpy as np
cimport numpy as np
def do_stuff():
print("Hello World!")
cdef int n
n = 2
r = np.random.randint(1,5)
print("A random number: "+str(r))
print("A random number multiplied by 2 (made by cdef):"+str(r*n))
input("Press Enter to continue.")
setup.py :
from distutils.core import setup, Extension
from Cython.Build import cythonize
import numpy
setup(
ext_modules=cythonize("hello.pyx"),
include_dirs=[numpy.get_include()]
)
main.py :
import program
import numpy
program.do_stuff()