ਪਾਈਥਨ 3.10 ਦੀ ਵਰਤੋਂ ਕਰਕੇ Kivy ਐਪ ਵਿੱਚ PyInstaller ਸਟਾਰਟਅਪ ਕਰੈਸ਼ ਨੂੰ ਠੀਕ ਕਰਨਾ

ਪਾਈਥਨ 3.10 ਦੀ ਵਰਤੋਂ ਕਰਕੇ Kivy ਐਪ ਵਿੱਚ PyInstaller ਸਟਾਰਟਅਪ ਕਰੈਸ਼ ਨੂੰ ਠੀਕ ਕਰਨਾ
ਪਾਈਥਨ 3.10 ਦੀ ਵਰਤੋਂ ਕਰਕੇ Kivy ਐਪ ਵਿੱਚ PyInstaller ਸਟਾਰਟਅਪ ਕਰੈਸ਼ ਨੂੰ ਠੀਕ ਕਰਨਾ

ਪਾਈਇੰਸਟਾਲਰ ਨਾਲ ਬਣੇ ਕਿਵੀ ਐਪਸ ਵਿੱਚ ਸਟਾਰਟਅੱਪ ਕਰੈਸ਼ਾਂ ਨੂੰ ਸਮਝਣਾ

PyInstaller ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ Kivy ਐਪ ਬਣਾਉਣਾ Python ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਸਟੈਂਡਅਲੋਨ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਵਿੱਚ ਪੈਕ ਕਰਨ ਲਈ ਇੱਕ ਆਮ ਪਹੁੰਚ ਹੈ। ਹਾਲਾਂਕਿ, ਇੱਕ ਸਫਲ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਦੇ ਬਾਵਜੂਦ, ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਪੈਕਡ ਐਪ ਨੂੰ ਲਾਂਚ ਕਰਨ ਵੇਲੇ ਕਈ ਵਾਰ ਅਚਾਨਕ ਕ੍ਰੈਸ਼ਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। ਇਹ ਮੁੱਦਾ ਖਾਸ ਤੌਰ 'ਤੇ ਨਿਰਾਸ਼ਾਜਨਕ ਹੋ ਸਕਦਾ ਹੈ ਜਦੋਂ ਕੋਈ ਵਿਸਤ੍ਰਿਤ ਗਲਤੀ ਸੁਨੇਹਾ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਐਪ ਵਿਕਾਸ ਵਾਤਾਵਰਣ ਵਿੱਚ ਪੂਰੀ ਤਰ੍ਹਾਂ ਚੱਲਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ PyCharm, ਪਰ PyInstaller ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੈਕ ਕੀਤੇ ਜਾਣ 'ਤੇ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ। Kivy 2.3.0, Python 3.10, ਅਤੇ numpy, scipy, ਅਤੇ pandas ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੇ ਨਾਲ, ਕਰੈਸ਼ ਦੇ ਸਰੋਤ ਦੀ ਪਛਾਣ ਕਰਨਾ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਬਣ ਜਾਂਦਾ ਹੈ।

"ਅਚਨਚੇਤ ਗਲਤੀ" ਵਰਗੀਆਂ ਗਲਤੀਆਂ ਬਿਨਾਂ ਕਿਸੇ ਸਪੱਸ਼ਟ ਟਰੇਸ ਦੇ ਅਕਸਰ ਗੁੰਮ ਨਿਰਭਰਤਾਵਾਂ, ਗਲਤ SPEC ਫਾਈਲ ਸੰਰਚਨਾਵਾਂ, ਜਾਂ ਵਰਚੁਅਲ ਵਾਤਾਵਰਨ ਅਸੰਗਤਤਾਵਾਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀਆਂ ਹਨ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਦੀ ਮਹੱਤਤਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ ਕਿ ਸਾਰੀਆਂ ਲੋੜੀਂਦੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਬੰਡਲ ਕੀਤਾ ਗਿਆ ਹੈ, PyInstaller SPEC ਫਾਈਲ ਅਤੇ ਰਨਟਾਈਮ ਨਿਰਭਰਤਾ ਦੀ ਸਮੀਖਿਆ ਕਰਨਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਕਦਮ ਹੈ।

ਇਹ ਲੇਖ ਕ੍ਰੈਸ਼ ਦੇ ਸੰਭਾਵਿਤ ਕਾਰਨਾਂ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ, ਤੁਹਾਡੀ SPEC ਫਾਈਲ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਤ ਕਰਦਾ ਹੈ, ਲੁਕਵੇਂ ਆਯਾਤ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ ਜ਼ਰੂਰੀ ਕੀਵੀ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲਿਆ ਗਿਆ ਹੈ।

ਹੁਕਮ ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ
Analysis() ਇਹ ਕਮਾਂਡ PyInstaller ਵਿਸ਼ਲੇਸ਼ਣ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸ਼ੁਰੂ ਕਰਦੀ ਹੈ, ਇਹ ਦੱਸਦੀ ਹੈ ਕਿ ਕਿਹੜੀ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਨੂੰ ਬੰਡਲ ਕਰਨਾ ਹੈ ਅਤੇ ਨਿਰਭਰਤਾਵਾਂ ਕਿੱਥੇ ਲੱਭਣੀਆਂ ਹਨ। ਇਹ ਸੰਰਚਿਤ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਐਪ ਨੂੰ ਕਿਵੇਂ ਪੈਕ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਲੁਕਵੇਂ ਆਯਾਤ ਅਤੇ ਬਾਇਨਰੀਆਂ ਅਤੇ JSON ਫਾਈਲਾਂ ਵਰਗੇ ਬਾਹਰੀ ਡੇਟਾ ਸ਼ਾਮਲ ਹਨ।
hiddenimports Analysis() ਦੇ ਅੰਦਰ ਇੱਕ ਪੈਰਾਮੀਟਰ Python ਪੈਕੇਜਾਂ (ਉਦਾਹਰਨ ਲਈ, numpy, pandas, ਆਦਿ) ਨੂੰ ਦਸਤੀ ਦਰਸਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜੋ PyInstaller ਆਪਣੇ ਆਪ ਨਹੀਂ ਖੋਜ ਸਕਦਾ ਹੈ, ਗੁੰਮ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨਾਲ ਸੰਬੰਧਿਤ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ।
Tree() ਇਹ ਕਮਾਂਡ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ COLLECT ਪਗ ਵਿੱਚ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਸਮੁੱਚੀਆਂ ਡਾਇਰੈਕਟਰੀਆਂ, ਜਿਵੇਂ ਕਿ sdl2.dep_bins ਅਤੇ glew.dep_bins, ਫਾਈਨਲ ਬਿਲਡ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਐਪ ਵਿੱਚ ਗ੍ਰਾਫਿਕਸ ਅਤੇ ਆਵਾਜ਼ ਲਈ ਜ਼ਰੂਰੀ ਕੀਵੀ ਨਿਰਭਰਤਾ ਸ਼ਾਮਲ ਹੈ।
COLLECT() ਸਾਰੀਆਂ ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਫਾਈਲਾਂ, ਬਾਈਨਰੀਆਂ, ਅਤੇ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਇੱਕ ਆਉਟਪੁੱਟ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਇਕੱਠਾ ਕਰਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਵੰਡ ਲਈ ਸਾਰੇ ਸਰੋਤਾਂ, ਲਾਇਬ੍ਰੇਰੀਆਂ ਅਤੇ ਫਾਈਲਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਇਕੱਠਾ ਕੀਤਾ ਗਿਆ ਹੈ।
datas ਬੰਡਲ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਖਾਸ ਫਾਈਲਾਂ (ਜਿਵੇਂ ਕਿ ਤਿਆਰ ਕੀਤੀ data.json) ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਕੀਵੀ ਐਪਸ ਵਿੱਚ JsonStore ਦੁਆਰਾ ਬਣਾਈਆਂ JSON ਫਾਈਲਾਂ ਵਰਗੇ ਬਾਹਰੀ ਸਰੋਤਾਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਇਹ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ।
JsonStore() JSON ਫਾਰਮੈਟ ਵਿੱਚ ਡਾਟਾ ਸਟੋਰ ਕਰਨ ਅਤੇ ਪ੍ਰਬੰਧਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਇੱਕ ਖਾਸ Kivy ਕਮਾਂਡ। ਪੈਕੇਜਿੰਗ ਤੋਂ ਬਾਅਦ ਗੁੰਮ ਹੋਈਆਂ ਫਾਈਲਾਂ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਬਚਣ ਲਈ PyInstaller ਡੇਟਾ ਕੌਂਫਿਗਰੇਸ਼ਨ ਵਿੱਚ ਕਿਸੇ ਵੀ ਤਿਆਰ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਸ਼ਾਮਲ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ।
upx=True ਇਹ ਵਿਕਲਪ ਪੈਕੇਜਿੰਗ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ ਬਾਈਨਰੀਆਂ ਲਈ UPX ਕੰਪਰੈਸ਼ਨ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ ਇਹ ਤਿਆਰ ਕੀਤੇ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਦੇ ਆਕਾਰ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ, ਇਹ ਕਈ ਵਾਰ ਅਨੁਕੂਲਤਾ ਸਮੱਸਿਆਵਾਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ, ਇਸਲਈ ਇਸਨੂੰ ਸਾਵਧਾਨੀ ਨਾਲ ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਹੈ।
strip=False ਬਾਈਨਰੀਆਂ ਤੋਂ ਡੀਬੱਗ ਚਿੰਨ੍ਹਾਂ ਨੂੰ ਹਟਾਉਣ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਰਨਟਾਈਮ ਦੌਰਾਨ ਸ਼ੁਰੂਆਤੀ ਮੁੱਦਿਆਂ ਦਾ ਨਿਦਾਨ ਕਰਨ ਅਤੇ ਗਲਤੀਆਂ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਉਪਯੋਗੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਐਪ ਘੱਟੋ-ਘੱਟ ਗਲਤੀ ਆਉਟਪੁੱਟ ਨਾਲ ਕ੍ਰੈਸ਼ ਹੋ ਰਿਹਾ ਹੈ।
bootloader_ignore_signals ਇੱਕ ਫਲੈਗ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ PyInstaller ਦਾ ਬੂਟਲੋਡਰ SIGTERM ਵਰਗੇ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਸਿਗਨਲਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰੇਗਾ। ਇਹ ਸਟਾਰਟਅੱਪ ਦੇ ਦੌਰਾਨ ਐਪ ਦੇ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਸਮਾਪਤੀ ਨੂੰ ਰੋਕ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਅਚਾਨਕ ਕਰੈਸ਼ ਹੋਣ ਦਾ ਇੱਕ ਕਾਰਨ ਹੋ ਸਕਦਾ ਹੈ।

PyInstaller ਨਾਲ Kivy ਐਪ ਸਟਾਰਟਅਪ ਗਲਤੀਆਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨਾ

ਉੱਪਰ ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਇੱਕ ਬਹੁਤ ਹੀ ਖਾਸ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਨ 'ਤੇ ਕੇਂਦ੍ਰਿਤ ਹਨ: ਇੱਕ "ਅਚਾਨਕ ਗਲਤੀ" ਦੇ ਨਾਲ ਸਟਾਰਟਅੱਪ 'ਤੇ ਕ੍ਰੈਸ਼ ਹੋਣ 'ਤੇ PyInstaller ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਬਣਾਇਆ ਗਿਆ ਇੱਕ Kivy ਐਪ। ਪਹਿਲੀ ਸਕ੍ਰਿਪਟ ਗੁੰਮ ਹੋਣ ਵਾਲੀ ਸੰਭਾਵੀ ਸਮੱਸਿਆ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਦੀ ਹੈ ਲੁਕੇ ਹੋਏ ਆਯਾਤ. PyInstaller ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਇਹ ਇੱਕ ਆਮ ਸਮੱਸਿਆ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਆਪਣੇ ਆਪ ਹੀ ਸਾਰੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਦਾ ਪਤਾ ਨਹੀਂ ਲਗਾਉਂਦੀ, ਖਾਸ ਕਰਕੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਿਵੇਂ ਕਿ ਸੁੰਨਸਾਨ, ਪਾਂਡਾ, ਜਾਂ ਚਟਾਕ. ਵਿੱਚ ਇਹਨਾਂ ਲੁਕੇ ਹੋਏ ਆਯਾਤ ਨੂੰ ਦਸਤੀ ਨਿਰਧਾਰਿਤ ਕਰਕੇ ਵਿਸ਼ਲੇਸ਼ਣ SPEC ਫਾਈਲ ਦੇ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਾਂ ਕਿ PyInstaller ਸਾਰੇ ਲੋੜੀਂਦੇ ਮੋਡਿਊਲਾਂ ਨੂੰ ਬੰਡਲ ਕਰਦਾ ਹੈ, ਗੁੰਮ ਭਾਗਾਂ ਦੇ ਕਾਰਨ ਐਪ ਨੂੰ ਕ੍ਰੈਸ਼ ਹੋਣ ਤੋਂ ਰੋਕਦਾ ਹੈ।

ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਦੂਜਾ ਮਹੱਤਵਪੂਰਨ ਕਦਮ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ ਰੁੱਖ() ਵਿੱਚ ਇਕੱਠਾ ਕਰੋ ਪੜਾਅ ਇਹ ਕਮਾਂਡ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਕੀਵੀ ਨਾਲ ਸੰਬੰਧਿਤ ਐਪ ਦੀ ਨਿਰਭਰਤਾ, ਜਿਵੇਂ ਕਿ SDL2 ਅਤੇ GLEW ਲਾਇਬ੍ਰੇਰੀਆਂ, ਬਿਲਡ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਸ਼ਾਮਲ ਹਨ। ਇਹ ਐਪ ਦੇ ਗ੍ਰਾਫਿਕਲ ਇੰਟਰਫੇਸ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹਨ। ਜੇਕਰ ਇਹਨਾਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ Kivy ਐਪ ਸਹੀ ਢੰਗ ਨਾਲ ਚੱਲਣ ਵਿੱਚ ਅਸਫਲ ਰਹੇਗੀ, ਭਾਵੇਂ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਬਿਨਾਂ ਕਿਸੇ ਤਰੁੱਟੀ ਦੇ ਪੂਰੀ ਹੁੰਦੀ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਇਹਨਾਂ ਬਾਈਨਰੀਆਂ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ, ਗੁੰਮ ਹੋਏ ਗ੍ਰਾਫਿਕਸ ਜਾਂ ਧੁਨੀ ਭਾਗਾਂ ਨਾਲ ਸੰਬੰਧਿਤ ਰਨਟਾਈਮ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਬਚਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।

ਸਕ੍ਰਿਪਟ ਬਾਹਰੀ ਫਾਈਲਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਨੂੰ ਵੀ ਸੰਬੋਧਿਤ ਕਰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਦੁਆਰਾ ਬਣਾਈ ਗਈ JSON ਫਾਈਲ ਜੇਸਨਸਟੋਰ ਕਿਵੀ ਵਿੱਚ. ਹਾਲਾਂਕਿ ਇਹ JSON ਫਾਈਲ ਰਨਟਾਈਮ 'ਤੇ ਤਿਆਰ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਇਹ ਪੈਕੇਜਿੰਗ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ ਸਹੀ ਢੰਗ ਨਾਲ ਹੈਂਡਲ ਕੀਤੀ ਗਈ ਹੈ। ਦ ਡਾਟਾ ਵਿੱਚ ਦਲੀਲ ਵਿਸ਼ਲੇਸ਼ਣ ਫੰਕਸ਼ਨ ਸਾਨੂੰ ਇਸ ਫਾਈਲ ਨੂੰ ਬੰਡਲ ਐਪ ਵਿੱਚ ਸਪਸ਼ਟ ਰੂਪ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਅਜਿਹਾ ਕਰਨ ਨਾਲ, ਅਸੀਂ ਉਸ ਗਲਤੀ ਤੋਂ ਬਚਦੇ ਹਾਂ ਜਿੱਥੇ ਸ਼ੁਰੂਆਤੀਕਰਣ ਦੌਰਾਨ ਬਾਹਰੀ ਡਾਟਾ ਫਾਈਲਾਂ ਦੇ ਗੁੰਮ ਹੋਣ ਕਾਰਨ ਐਪ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦੀ ਹੈ।

ਅੰਤ ਵਿੱਚ, ਅਸੀਂ UPX ਕੰਪਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਵੀ ਦੇਖਦੇ ਹਾਂ ਅਤੇ ਪੱਟੀ ਵਿਕਲਪ। UPX ਕੰਪਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਬੰਡਲ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਆਕਾਰ ਨੂੰ ਘਟਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਵੰਡ ਨੂੰ ਆਸਾਨ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, UPX ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਨਾਲ ਕਈ ਵਾਰ ਅਨੁਕੂਲਤਾ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਹੁੰਦੀਆਂ ਹਨ, ਇਸ ਲਈ ਇਸ ਨਾਲ ਪੇਅਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਪੱਟੀ = ਝੂਠਾ ਬਾਈਨਰੀ ਤੋਂ ਡੀਬੱਗ ਚਿੰਨ੍ਹਾਂ ਨੂੰ ਹਟਾਉਣ ਤੋਂ ਬਚਣ ਲਈ। ਡੀਬੱਗ ਚਿੰਨ੍ਹਾਂ ਨੂੰ ਰੱਖ ਕੇ, ਅਸੀਂ ਰਨਟਾਈਮ ਦੌਰਾਨ ਕਿਸੇ ਵੀ ਕਰੈਸ਼ ਜਾਂ ਤਰੁੱਟੀ ਦੇ ਕਾਰਨ ਨੂੰ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਟਰੇਸ ਕਰ ਸਕਦੇ ਹਾਂ। ਵਿੰਡੋਡ ਟਰੇਸਬੈਕ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣਾ ਇੱਕ ਹੋਰ ਸੰਰਚਨਾ ਹੈ ਜੋ ਸਮੱਸਿਆਵਾਂ ਦਾ ਨਿਦਾਨ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਕੰਸੋਲ ਵਿੱਚ ਗਲਤੀ ਸੁਨੇਹਿਆਂ ਨੂੰ ਪ੍ਰਗਟ ਹੋਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਸੰਭਾਵੀ ਮੁੱਦਿਆਂ ਬਾਰੇ ਸੂਝ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

ਕਿਵੀ ਐਪਸ ਲਈ ਪਾਈਇੰਸਟਾਲਰ ਬਿਲਡਸ ਵਿੱਚ ਗੁੰਮ ਹੋਈ ਨਿਰਭਰਤਾ ਨੂੰ ਸੰਭਾਲਣਾ

ਪਾਈਥਨ ਬੈਕਐਂਡ ਹੱਲ PyInstaller ਵਿੱਚ ਲੁਕੇ ਹੋਏ ਆਯਾਤ ਨੂੰ ਹੱਲ ਕਰਨ 'ਤੇ ਫੋਕਸ ਨਾਲ

# Step 1: Modify the SPEC file to include hidden imports manually
# Import necessary dependencies from Kivy, sdl2, and glew
from kivy_deps import sdl2, glew
# Add numpy, pandas, scipy to hidden imports manually
a = Analysis([r'path_to_your_app.py'],
             pathex=['.'],
             binaries=[],
             datas=[],
             hiddenimports=['numpy', 'pandas', 'scipy'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             noarchive=False)
# Add Tree() for all Kivy dependencies to the collect step
coll = COLLECT(exe, Tree('C:\\path_to_project'),
               a.binaries, a.zipfiles, a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
               strip=False, upx=True, name='Prototype')

Kivy PyInstaller ਬਿਲਡ ਵਿੱਚ JSONStore ਅਤੇ ਡੇਟਾ ਫਾਈਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ

ਪਾਈਥਨ ਬੈਕਐਂਡ ਹੱਲ JSONStore ਅਤੇ PyInstaller ਨਾਲ ਡਾਟਾ ਫਾਈਲ ਸੰਮਿਲਨ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ

# Step 2: Ensure that the generated JSON file from kivy.storage.jsonstore is included
from kivy.storage.jsonstore import JsonStore
# If JSONStore is used, manually add the JSON file to the build
store = JsonStore('data.json')
# Create the SPEC file to explicitly include the JSON data
datas=[('data.json', '.')],
a = Analysis([r'path_to_your_app.py'],
             pathex=['.'],
             binaries=[],
             datas=[('data.json', '.')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             noarchive=False)
coll = COLLECT(exe, Tree('C:\\path_to_project'),
               a.binaries, a.zipfiles, a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
               strip=False, upx=True, name='Prototype')

ਸ਼ੁਰੂਆਤੀ ਤਰੁੱਟੀਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਕਿਵੀ ਐਪਸ ਲਈ ਪਾਈਇੰਸਟਾਲਰ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨਾ

PyInstaller ਅਤੇ Kivy ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਵਿਚਾਰਨ ਲਈ ਇੱਕ ਮੁੱਖ ਪਹਿਲੂ ਬਾਹਰੀ ਨਿਰਭਰਤਾ ਅਤੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਹੈ। PyInstaller ਦਾ ਡਿਫੌਲਟ ਵਿਵਹਾਰ ਕਈ ਵਾਰ ਕੁਝ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਾਂ ਫਾਈਲਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ ਸੈੱਟਅੱਪ ਜਿਵੇਂ ਕਿ ਵਰਚੁਅਲ ਵਾਤਾਵਰਨ ਜਾਂ ਵਿਗਿਆਨਕ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਿਵੇਂ ਕਿ ਸੁੰਨਸਾਨ ਅਤੇ ਪਾਂਡਾ. ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਨਾ ਕਿ ਸਾਰੇ ਲੁਕੇ ਹੋਏ ਆਯਾਤ ਵਿੱਚ ਦਰਸਾਏ ਗਏ ਹਨ hiddenimports ਪੈਰਾਮੀਟਰ ਨਾਜ਼ੁਕ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, PyInstaller ਵਿੱਚ ਆਟੋਮੈਟਿਕਲੀ ਗ੍ਰਾਫਿਕਲ ਅਤੇ ਮਲਟੀਮੀਡੀਆ ਨਿਰਭਰਤਾ ਸ਼ਾਮਲ ਨਹੀਂ ਹੋ ਸਕਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਇਹਨਾਂ ਤੋਂ sdl2 ਜਾਂ glew, ਜੋ ਕਿ ਦੋਵੇਂ Kivy ਐਪਸ ਲਈ ਜ਼ਰੂਰੀ ਹਨ।

ਇੱਕ ਹੋਰ ਪਹਿਲੂ ਜਿਸ ਨੂੰ ਡਿਵੈਲਪਰ ਅਕਸਰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹਨ ਉਹ ਵਰਚੁਅਲ ਵਾਤਾਵਰਨ ਨਾਲ ਸਬੰਧਤ ਹੈ। ਜਦੋਂ ਇੱਕ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਦੇ ਅੰਦਰ PyInstaller ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ Kivy ਐਪ ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ ਕਿ ਸਾਰੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਸਹੀ ਢੰਗ ਨਾਲ ਬੰਡਲ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ। ਇਸ ਵਿੱਚ ਐਡਜਸਟ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ pathex ਸਹੀ ਡਾਇਰੈਕਟਰੀਆਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਨ ਲਈ ਸੈਟਿੰਗ ਜਿੱਥੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਸਥਾਪਤ ਹਨ। ਅਜਿਹਾ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹਿਣ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਪੈਕਡ ਐਪ ਵਿਕਾਸ ਵਾਤਾਵਰਣ ਵਿੱਚ ਵਧੀਆ ਚੱਲ ਸਕਦੀ ਹੈ ਪਰ ਉਤਪਾਦਨ ਵਿੱਚ ਸ਼ੁਰੂਆਤੀ ਸਮੇਂ ਵਿੱਚ ਕ੍ਰੈਸ਼ ਹੋ ਸਕਦੀ ਹੈ। ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਅਕਸਰ ਬਿਲਡ ਸੰਰਚਨਾ ਦੀ ਪੂਰੀ ਜਾਂਚ ਕਰਕੇ ਅਤੇ ਸਾਰੇ ਮਾਰਗ ਅਤੇ ਨਿਰਭਰਤਾ ਸਹੀ ਹੋਣ ਨੂੰ ਯਕੀਨੀ ਬਣਾ ਕੇ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਅੰਤ ਵਿੱਚ, ਅਚਨਚੇਤ ਸ਼ੁਰੂਆਤੀ ਤਰੁੱਟੀਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਚਿੱਤਰਾਂ, ਫੌਂਟਾਂ ਅਤੇ ਡੇਟਾ ਫਾਈਲਾਂ ਵਰਗੇ ਸਰੋਤਾਂ ਦਾ ਸਹੀ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। Kivy ਐਪਸ ਵਿੱਚ, ਬਾਹਰੀ ਸਰੋਤਾਂ ਦੀ ਅਕਸਰ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਜੇਕਰ ਇਹਨਾਂ ਨੂੰ PyInstaller ਵਿੱਚ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। datas ਭਾਗ, ਗੁੰਮ ਫਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਅਰੰਭਕਰਨ ਦੌਰਾਨ ਐਪ ਕ੍ਰੈਸ਼ ਹੋ ਸਕਦੀ ਹੈ। ਇਹ ਤਸਦੀਕ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਰਨਟਾਈਮ 'ਤੇ ਐਪ ਦੁਆਰਾ ਲੋੜੀਂਦੀਆਂ ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਅੰਤਿਮ ਬਿਲਡ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਸ਼ਾਮਲ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।

ਪਾਈਇੰਸਟਾਲਰ ਨਾਲ ਕਿਵੀ ਐਪ ਕਰੈਸ਼ ਹੋਣ 'ਤੇ ਆਮ ਸਵਾਲ

  1. PyInstaller ਨਾਲ ਬਣਾਉਣ ਤੋਂ ਬਾਅਦ ਮੇਰੀ Kivy ਐਪ ਕ੍ਰੈਸ਼ ਕਿਉਂ ਹੋ ਜਾਂਦੀ ਹੈ?
  2. ਸਭ ਤੋਂ ਆਮ ਕਾਰਨ ਗੁੰਮ ਨਿਰਭਰਤਾ ਹੈ। ਸਾਰੀਆਂ ਲੋੜੀਂਦੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਓ, ਜਿਵੇਂ ਕਿ numpy, scipy, ਅਤੇ pandas, ਨੂੰ PyInstaller SPEC ਫਾਈਲ ਵਿੱਚ ਲੁਕਵੇਂ ਆਯਾਤ ਵਜੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ।
  3. ਮੈਂ ਆਪਣੀ ਬਿਲਡ ਵਿੱਚ sdl2 ਅਤੇ glew ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਕਿਵੇਂ ਸ਼ਾਮਲ ਕਰਾਂ?
  4. ਦੀ ਵਰਤੋਂ ਕਰੋ Tree ਵਿੱਚ ਫੰਕਸ਼ਨ COLLECT sdl2 ਅਤੇ glew binaries ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਕਦਮ. ਇਹ ਕਿਵੀ ਦੇ ਗ੍ਰਾਫਿਕਲ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਲੋੜੀਂਦੇ ਹਨ।
  5. ਕੀ PyInstaller ਵਰਚੁਅਲ ਵਾਤਾਵਰਨ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲ ਸਕਦਾ ਹੈ?
  6. ਹਾਂ, ਪਰ ਤੁਹਾਨੂੰ ਸਹੀ ਸੈੱਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ pathex SPEC ਫਾਈਲ ਵਿੱਚ ਉਸ ਵਾਤਾਵਰਣ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਨ ਲਈ ਜਿੱਥੇ ਨਿਰਭਰਤਾ ਸਥਾਪਤ ਕੀਤੀ ਗਈ ਹੈ, ਨਹੀਂ ਤਾਂ ਐਪ ਉਹਨਾਂ ਨੂੰ ਲੱਭਣ ਵਿੱਚ ਅਸਫਲ ਹੋ ਸਕਦੀ ਹੈ।
  7. ਮੈਨੂੰ ਕੀ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜੇਕਰ ਮੇਰੀ ਐਪ PyCharm ਵਿੱਚ ਕੰਮ ਕਰਦੀ ਹੈ ਪਰ ਪੈਕ ਕੀਤੇ ਜਾਣ 'ਤੇ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦੀ ਹੈ?
  8. ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੀਆਂ ਰਨਟਾਈਮ ਨਿਰਭਰਤਾਵਾਂ ਸ਼ਾਮਲ ਹਨ, ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ datas SPEC ਫਾਈਲ ਦੇ ਭਾਗ ਵਿੱਚ ਤੁਹਾਡੀ ਐਪ ਦੁਆਰਾ ਵਰਤੀਆਂ ਜਾਂਦੀਆਂ ਸਾਰੀਆਂ ਜ਼ਰੂਰੀ ਫਾਈਲਾਂ ਸ਼ਾਮਲ ਹਨ, ਜਿਵੇਂ ਕਿ ਫੌਂਟ, ਚਿੱਤਰ, ਜਾਂ JSON ਡੇਟਾ।
  9. ਮੈਂ ਬਿਨਾਂ ਕਿਸੇ ਟਰੇਸਬੈਕ ਦੇ "ਅਚਾਨਕ ਗਲਤੀ" ਸੰਦੇਸ਼ ਦਾ ਨਿਪਟਾਰਾ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
  10. ਸੈੱਟ ਕਰੋ console ਨੂੰ ਪੈਰਾਮੀਟਰ True ਵਿੱਚ EXE ਕਦਮ ਇਹ ਟਰਮੀਨਲ ਵਿੱਚ ਤਰੁੱਟੀਆਂ ਨੂੰ ਆਉਟਪੁੱਟ ਕਰੇਗਾ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਕਰੈਸ਼ ਦੇ ਕਾਰਨ ਦਾ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ।

ਪਾਈਇੰਸਟਾਲਰ ਕਰੈਸ਼ਾਂ ਲਈ ਹੱਲਾਂ ਨੂੰ ਸਮੇਟਣਾ

ਇਸ ਗਾਈਡ ਵਿੱਚ, ਅਸੀਂ ਜਾਂਚ ਕੀਤੀ ਹੈ ਕਿ ਵਿਕਾਸ ਵਾਤਾਵਰਨ ਵਿੱਚ ਪੂਰੀ ਤਰ੍ਹਾਂ ਚੱਲਣ ਦੇ ਬਾਵਜੂਦ, PyInstaller ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ Kivy ਐਪਾਂ ਕ੍ਰੈਸ਼ ਕਿਉਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਗੁੰਮ ਹੋਈ ਲਾਇਬ੍ਰੇਰੀਆਂ, ਗਲਤ ਤਰੀਕੇ ਨਾਲ ਬੰਡਲ ਕੀਤੇ ਡੇਟਾ, ਜਾਂ ਨਿਰਭਰਤਾ ਦੀਆਂ ਗਲਤ ਸੰਰਚਨਾਵਾਂ ਵਰਗੇ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ ਇਹਨਾਂ ਕਰੈਸ਼ਾਂ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।

SPEC ਫਾਈਲ ਨੂੰ ਧਿਆਨ ਨਾਲ ਵਿਵਸਥਿਤ ਕਰਕੇ, ਲੁਕਵੇਂ ਆਯਾਤ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਕੇ, ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾ ਕੇ ਕਿ ਸਾਰੇ ਸਰੋਤ ਅਤੇ ਨਿਰਭਰਤਾ ਸ਼ਾਮਲ ਹਨ, ਤੁਸੀਂ ਇੱਕ Kivy ਐਪ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਪੈਕੇਜ ਕਰ ਸਕਦੇ ਹੋ। ਇਹਨਾਂ ਵੇਰਵਿਆਂ ਦਾ ਸਹੀ ਪ੍ਰਬੰਧਨ ਇਹ ਯਕੀਨੀ ਬਣਾਏਗਾ ਕਿ ਤੁਹਾਡੀ ਐਪ PyInstaller ਨਾਲ ਬਣਾਏ ਜਾਣ ਤੋਂ ਬਾਅਦ ਨਿਰਵਿਘਨ ਕੰਮ ਕਰਦੀ ਹੈ।

PyInstaller Kivy ਐਪ ਕਰੈਸ਼ਾਂ ਲਈ ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
  1. ਲੁਕਵੇਂ ਆਯਾਤ ਅਤੇ ਨਿਰਭਰਤਾ ਪ੍ਰਬੰਧਨ ਸਮੇਤ ਆਮ PyInstaller ਪੈਕੇਜਿੰਗ ਮੁੱਦਿਆਂ ਦੇ ਹੱਲਾਂ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ। PyInstaller ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼
  2. ਐਪਲੀਕੇਸ਼ਨ ਬਣਾਉਂਦੇ ਸਮੇਂ ਕੀਵੀ-ਵਿਸ਼ੇਸ਼ ਨਿਰਭਰਤਾਵਾਂ ਜਿਵੇਂ ਕਿ SDL2 ਅਤੇ GLEW ਨੂੰ ਸੰਭਾਲਣ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਕਿਵੀ ਦਸਤਾਵੇਜ਼: ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਪੈਕ ਕਰਨਾ
  3. ਵਰਚੁਅਲ ਵਾਤਾਵਰਨ ਵਿੱਚ ਸਮੱਸਿਆਵਾਂ ਦੇ ਨਿਪਟਾਰੇ ਬਾਰੇ ਚਰਚਾ, ਖਾਸ ਕਰਕੇ ਗੁੰਝਲਦਾਰ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਿਵੇਂ ਕਿ ਨੰਪੀ ਅਤੇ ਪਾਂਡਾ ਨਾਲ। ਸਟੈਕ ਓਵਰਫਲੋ: ਪਾਈਇੰਸਟਾਲਰ ਅਤੇ ਕੀਵੀ ਗਲਤੀਆਂ