பைதான் 3.10 ஐப் பயன்படுத்தி Kivy பயன்பாட்டில் PyInstaller ஸ்டார்ட்அப் செயலிழப்பை சரிசெய்தல்

பைதான் 3.10 ஐப் பயன்படுத்தி Kivy பயன்பாட்டில் PyInstaller ஸ்டார்ட்அப் செயலிழப்பை சரிசெய்தல்
பைதான் 3.10 ஐப் பயன்படுத்தி Kivy பயன்பாட்டில் PyInstaller ஸ்டார்ட்அப் செயலிழப்பை சரிசெய்தல்

PyInstaller மூலம் கட்டமைக்கப்பட்ட Kivy பயன்பாடுகளில் தொடக்க செயலிழப்புகளைப் புரிந்துகொள்வது

PyInstaller ஐப் பயன்படுத்தி Kivy பயன்பாட்டை உருவாக்குவது, பைதான் பயன்பாடுகளை தனித்த இயங்கக்கூடியதாக பேக்கேஜிங் செய்வதற்கான பொதுவான அணுகுமுறையாகும். இருப்பினும், ஒரு வெற்றிகரமான உருவாக்க செயல்முறை இருந்தபோதிலும், தொகுக்கப்பட்ட பயன்பாட்டைத் தொடங்கும் போது டெவலப்பர்கள் சில நேரங்களில் எதிர்பாராத செயலிழப்புகளை சந்திக்கின்றனர். விரிவான பிழைச் செய்தி எதுவும் வழங்கப்படாதபோது இந்தச் சிக்கல் குறிப்பாக வெறுப்பாக இருக்கும்.

இந்த வழக்கில், பயன்பாடு PyCharm போன்ற மேம்பாட்டு சூழலில் சரியாக இயங்குகிறது, ஆனால் PyInstaller ஐப் பயன்படுத்தி தொகுக்கப்படும்போது தோல்வியடைகிறது. Kivy 2.3.0, Python 3.10 மற்றும் numpy, scipy மற்றும் pandas போன்ற நூலகங்கள் போன்ற சார்புகளுடன், சிக்கலைத் தீர்ப்பதற்கு விபத்தின் மூலத்தைக் கண்டறிவது முக்கியமானதாகிறது.

தெளிவான தடயங்கள் இல்லாத "எதிர்பாராத பிழை" போன்ற பிழைகள் பெரும்பாலும் விடுபட்ட சார்புகள், தவறான SPEC கோப்பு உள்ளமைவுகள் அல்லது மெய்நிகர் சூழல் முரண்பாடுகளை சுட்டிக்காட்டுகின்றன. தேவையான அனைத்து கோப்புகளும் சரியாக தொகுக்கப்பட்டுள்ளதை உறுதிசெய்வதன் முக்கியத்துவத்தை கருத்தில் கொண்டு, PyInstaller SPEC கோப்பு மற்றும் இயக்க நேர சார்புகளை மதிப்பாய்வு செய்வது ஒரு முக்கியமான படியாகும்.

இந்த கட்டுரை செயலிழப்புக்கான சாத்தியமான காரணங்களை ஆராய்கிறது, உங்கள் SPEC கோப்பை மேம்படுத்துவதில் கவனம் செலுத்துகிறது, மறைக்கப்பட்ட இறக்குமதிகளை நிர்வகித்தல் மற்றும் உருவாக்க செயல்முறையின் போது தேவையான Kivy சார்புகள் சரியாக கையாளப்படுவதை உறுதி செய்கிறது.

கட்டளை பயன்பாட்டின் உதாரணம்
Analysis() இந்த கட்டளையானது PyInstaller பகுப்பாய்வு செயல்முறையை துவக்குகிறது, எந்த பைதான் ஸ்கிரிப்டை மூட்டை கட்ட வேண்டும் மற்றும் சார்புகளை எங்கு பார்க்க வேண்டும் என்பதைக் குறிப்பிடுகிறது. மறைக்கப்பட்ட இறக்குமதிகள் மற்றும் பைனரிகள் மற்றும் JSON கோப்புகள் போன்ற வெளிப்புற தரவு உட்பட, பயன்பாடு எவ்வாறு தொகுக்கப்பட்டுள்ளது என்பதை உள்ளமைக்க இது அவசியம்.
hiddenimports PyInstaller தானாகவே கண்டறியாத பைதான் தொகுப்புகளை (எ.கா. நம்பி, பாண்டாக்கள் போன்றவை) கைமுறையாகக் குறிப்பிட Analysis() உள்ள அளவுரு பயன்படுத்தப்படுகிறது, இது காணாமல் போன நூலகங்கள் தொடர்பான இயக்க நேரப் பிழைகளைத் தடுக்கிறது.
Tree() sdl2.dep_bins மற்றும் glew.dep_bins போன்ற முழு கோப்பகங்களும் இறுதி உருவாக்கத்தில் சேர்க்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்த, COLLECT படியில் இந்தக் கட்டளை பயன்படுத்தப்படுகிறது. பயன்பாட்டில் கிராபிக்ஸ் மற்றும் ஒலிக்கு தேவையான கிவி சார்புகள் இருப்பதை இது உறுதி செய்கிறது.
COLLECT() தொகுக்கப்பட்ட அனைத்து கோப்புகள், பைனரிகள் மற்றும் சார்புகளை ஒரு வெளியீட்டு கோப்பகத்தில் சேகரிக்கிறது. இது அனைத்து ஆதாரங்கள், நூலகங்கள் மற்றும் கோப்புகள் விநியோகத்திற்காக ஒன்றாக இணைக்கப்படுவதை உறுதி செய்கிறது.
datas தொகுக்கப்பட்ட பயன்பாட்டில் குறிப்பிட்ட கோப்புகளை (உருவாக்கப்பட்ட data.json போன்றவை) சேர்க்கப் பயன்படுகிறது. Kivy பயன்பாடுகளில் 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 தொடர்பான பயன்பாட்டின் சார்புகள் கட்டமைப்பில் சரியாகச் சேர்க்கப்பட்டுள்ளதை இந்தக் கட்டளை உறுதி செய்கிறது. பயன்பாட்டின் வரைகலை இடைமுகத்தை வழங்குவதற்கு இவை அவசியம். இந்தக் கோப்புகள் சேர்க்கப்படவில்லை என்றால், பிழைகள் இல்லாமல் உருவாக்க செயல்முறை முடிந்தாலும், Kivy ஆப் சரியாக இயங்கத் தவறிவிடும். இந்த பைனரிகள் சேர்க்கப்பட்டுள்ளதை உறுதிசெய்வது, விடுபட்ட கிராபிக்ஸ் அல்லது ஒலி கூறுகள் தொடர்பான இயக்க நேர சிக்கல்களைத் தவிர்க்க உதவுகிறது.

ஸ்கிரிப்ட் உருவாக்கிய JSON கோப்பு போன்ற வெளிப்புறக் கோப்புகளைச் சேர்ப்பதைக் குறிக்கிறது JsonStore கிவியில். இந்த JSON கோப்பு இயக்க நேரத்தில் உருவாக்கப்படும் போது, ​​பேக்கேஜிங் செயல்பாட்டின் போது இது சரியாக கையாளப்படுவதை உறுதி செய்வது மிகவும் முக்கியம். தி தரவுகள் இல் வாதம் பகுப்பாய்வு தொகுக்கப்பட்ட பயன்பாட்டில் இந்தக் கோப்பை வெளிப்படையாகச் சேர்க்க செயல்பாடு அனுமதிக்கிறது. அவ்வாறு செய்வதன் மூலம், துவக்கத்தின் போது வெளிப்புற தரவுக் கோப்புகள் காணாமல் போனதால் பயன்பாடு செயலிழக்கும் பிழையைத் தவிர்க்கிறோம்.

இறுதியாக, UPX சுருக்கத்தின் பயன்பாட்டையும் பார்க்கிறோம் துண்டு விருப்பம். UPX சுருக்கமானது தொகுக்கப்பட்ட பயன்பாட்டின் அளவைக் குறைக்கப் பயன்படுகிறது, இது விநியோகத்தை எளிதாக்குகிறது. இருப்பினும், UPX ஐ இயக்குவது சில நேரங்களில் பொருந்தக்கூடிய சிக்கல்களை ஏற்படுத்துகிறது, அதனால்தான் இது இணைக்கப்படுகிறது துண்டு=பொய் பைனரிகளில் இருந்து பிழைத்திருத்த குறியீடுகளை அகற்றுவதை தவிர்க்க. பிழைத்திருத்த குறியீடுகளை வைத்து, இயக்க நேரத்தின் போது ஏதேனும் செயலிழப்புகள் அல்லது பிழைகள் ஏற்பட்டால் அதற்கான காரணத்தை நாம் சிறப்பாக கண்டறிய முடியும். விண்டோட் ட்ரேஸ்பேக்கை முடக்குவது சிக்கல்களைக் கண்டறிய உதவும் மற்றொரு உள்ளமைவாகும், ஏனெனில் இது கன்சோலில் பிழைச் செய்திகளைத் தோன்ற அனுமதிக்கிறது, தொடக்கத்தில் சாத்தியமான சிக்கல்களைப் பற்றிய நுண்ணறிவுகளை வழங்குகிறது.

Kivy பயன்பாடுகளுக்கான PyInstaller Builds இல் விடுபட்ட சார்புகளைக் கையாளுதல்

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 Build இல் JSONStore மற்றும் Data Fileகளை நிர்வகித்தல்

PyInstaller உடன் JSONStore மற்றும் தரவு கோப்பு சேர்க்கை கையாளும் பைதான் பின்தள தீர்வு

# 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')

தொடக்கப் பிழைகளைத் தடுக்க, Kivy பயன்பாடுகளுக்கு PyInstaller ஐ மேம்படுத்துதல்

PyInstaller மற்றும் Kivy உடன் பணிபுரியும் போது, ​​கருத்தில் கொள்ள வேண்டிய ஒரு முக்கிய அம்சம் வெளிப்புற சார்புகள் மற்றும் நூலகங்களின் மேலாண்மை ஆகும். PyInstaller இன் இயல்புநிலை நடத்தை சில நேரங்களில் சில நூலகங்கள் அல்லது கோப்புகளை கவனிக்காது, குறிப்பாக மெய்நிகர் சூழல்கள் அல்லது அறிவியல் நூலகங்கள் போன்ற மிகவும் சிக்கலான அமைப்புகளுடன் பணிபுரியும் போது உணர்ச்சியற்ற மற்றும் பாண்டாக்கள். அனைத்து மறைக்கப்பட்ட இறக்குமதிகள் குறிப்பிடப்பட்டுள்ளதை உறுதி செய்தல் hiddenimports அளவுரு முக்கியமானது. கூடுதலாக, PyInstaller தானாகவே வரைகலை மற்றும் மல்டிமீடியா சார்புகளை சேர்க்காமல் இருக்கலாம் sdl2 அல்லது glew, இவை இரண்டும் Kivy பயன்பாடுகளுக்கு அவசியம்.

டெவலப்பர்கள் அடிக்கடி கவனிக்காத மற்றொரு அம்சம் மெய்நிகர் சூழல்களுடன் தொடர்புடையது. மெய்நிகர் சூழலில் PyInstaller ஐப் பயன்படுத்தி Kivy பயன்பாட்டை உருவாக்கும்போது, ​​அனைத்து சார்புகளும் சரியாகத் தொகுக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்துவது அவசியம். இது சரிசெய்தலை உள்ளடக்கியது pathex நூலகங்கள் நிறுவப்பட்டுள்ள சரியான கோப்பகங்களைச் சுட்டிக்காட்டும் வகையில் அமைக்கிறது. அவ்வாறு செய்யத் தவறினால், பேக்கேஜ் செய்யப்பட்ட பயன்பாடு வளர்ச்சி சூழலில் நன்றாக இயங்கும் ஆனால் உற்பத்தியில் தொடக்கத்தில் செயலிழக்கச் செய்யலாம். கட்டமைப்பின் கட்டமைப்பை முழுமையாக ஆராய்வதன் மூலமும், அனைத்து பாதைகள் மற்றும் சார்புகள் சரியாக இருப்பதை உறுதி செய்வதன் மூலமும் இந்தச் சிக்கலைத் தவிர்க்கலாம்.

கடைசியாக, எதிர்பாராத தொடக்கப் பிழைகளைத் தடுப்பதில் படங்கள், எழுத்துருக்கள் மற்றும் தரவுக் கோப்புகள் போன்ற வளங்களைச் சரியாகக் கையாள்வது முக்கியமானது. Kivy பயன்பாடுகளில், வெளிப்புற ஆதாரங்கள் அடிக்கடி தேவைப்படும், மேலும் இவை PyInstaller இல் வெளிப்படையாக சேர்க்கப்படவில்லை என்றால் datas பிரிவில், காணாமல் போன கோப்புகளை அணுக முயற்சிக்கும் போது, ​​துவக்கத்தின் போது பயன்பாடு செயலிழக்கக்கூடும். இயக்க நேரத்தில் பயன்பாட்டிற்குத் தேவையான அனைத்து கோப்புகளும் இறுதி உருவாக்கத்தில் சரியாகச் சேர்க்கப்பட்டுள்ளதா என்பதைச் சரிபார்க்க வேண்டியது அவசியம்.

PyInstaller உடன் Kivy App செயலிழப்பது குறித்த பொதுவான கேள்விகள்

  1. PyInstallerஐக் கொண்டு உருவாக்கிய பிறகு எனது Kivy பயன்பாடு ஏன் செயலிழக்கிறது?
  2. மிகவும் பொதுவான காரணம் விடுபட்ட சார்புகள். போன்ற தேவையான அனைத்து நூலகங்களையும் உறுதிப்படுத்தவும் numpy, scipy, மற்றும் pandas, PyInstaller SPEC கோப்பில் மறைக்கப்பட்ட இறக்குமதிகளாக சேர்க்கப்பட்டுள்ளன.
  3. எனது கட்டமைப்பில் sdl2 மற்றும் glew சார்புகளை எவ்வாறு சேர்ப்பது?
  4. பயன்படுத்தவும் Tree செயல்பாடு COLLECT sdl2 மற்றும் glew பைனரிகளை சேர்க்கும் படி. கிவியின் வரைகலை செயல்பாடுகளுக்கு இவை தேவைப்படுகின்றன.
  5. PyInstaller மெய்நிகர் சூழல்களை சரியாக கையாள முடியுமா?
  6. ஆம், ஆனால் நீங்கள் சரியாக அமைக்க வேண்டும் pathex SPEC கோப்பில் சார்புகள் நிறுவப்பட்டுள்ள சூழலை சுட்டிக்காட்டவும், இல்லையெனில் ஆப்ஸ் அவற்றைக் கண்டறிய முடியாமல் போகலாம்.
  7. எனது ஆப்ஸ் PyCharm இல் வேலை செய்து, தொகுக்கப்பட்ட போது செயலிழந்தால் நான் என்ன செய்ய வேண்டும்?
  8. அனைத்து இயக்க நேர சார்புகளும் சேர்க்கப்பட்டுள்ளன என்பதை உறுதிசெய்து, சரிபார்க்கவும் datas SPEC கோப்பில் உள்ள பிரிவில் எழுத்துருக்கள், படங்கள் அல்லது JSON தரவு போன்ற உங்கள் பயன்பாட்டால் பயன்படுத்தப்படும் அனைத்து தேவையான கோப்புகளும் உள்ளன.
  9. ட்ரேஸ்பேக் இல்லாமல் "எதிர்பாராத பிழை" செய்தியை எவ்வாறு சரிசெய்வது?
  10. அமைக்கவும் console அளவுரு True இல் EXE படி. இது டெர்மினலில் பிழைகளை வெளியிடும், விபத்துக்கான காரணத்தைக் கண்டறிய உங்களை அனுமதிக்கிறது.

PyInstaller செயலிழப்புகளுக்கான தீர்வுகளை மூடுதல்

இந்த வழிகாட்டியில், டெவலப்மெண்ட் சூழல்களில் சரியாக இயங்கினாலும், PyInstaller ஐப் பயன்படுத்தி உருவாக்கும்போது Kivy பயன்பாடுகள் ஏன் செயலிழக்கக்கூடும் என்பதை நாங்கள் ஆராய்ந்தோம். விடுபட்ட நூலகங்கள், தவறாக தொகுக்கப்பட்ட தரவு அல்லது சார்பு தவறான உள்ளமைவுகள் போன்ற சிக்கல்களைத் தீர்ப்பது இந்த செயலிழப்புகளைத் தடுக்க உதவுகிறது.

SPEC கோப்பை கவனமாக சரிசெய்வதன் மூலம், மறைக்கப்பட்ட இறக்குமதிகளை நிர்வகித்தல் மற்றும் அனைத்து ஆதாரங்கள் மற்றும் சார்புகள் சேர்க்கப்பட்டுள்ளதை உறுதிசெய்து, நீங்கள் Kivy பயன்பாட்டை வெற்றிகரமாக தொகுக்கலாம். இந்த விவரங்களைச் சரியாகக் கையாள்வது, PyInstaller உடன் கட்டமைக்கப்பட்ட பிறகு, உங்கள் பயன்பாடு தடையின்றி செயல்படுவதை உறுதி செய்யும்.

PyInstaller Kivy App செயலிழப்புகளுக்கான ஆதாரங்கள் மற்றும் குறிப்புகள்
  1. மறைக்கப்பட்ட இறக்குமதிகள் மற்றும் சார்பு மேலாண்மை உட்பட பொதுவான PyInstaller பேக்கேஜிங் சிக்கல்களுக்கான தீர்வுகளை விளக்குகிறது. PyInstaller அதிகாரப்பூர்வ ஆவணம்
  2. பயன்பாடுகளை உருவாக்கும் போது SDL2 மற்றும் GLEW போன்ற Kivy-சார்ந்த சார்புகளைக் கையாள்வது பற்றிய தகவலை வழங்குகிறது. கிவி ஆவணம்: உங்கள் விண்ணப்பத்தை பேக்கேஜிங் செய்தல்
  3. மெய்நிகர் சூழல்களில், குறிப்பாக நம்பி மற்றும் பாண்டாக்கள் போன்ற சிக்கலான பைதான் லைப்ரரிகளுடன் சரிசெய்தல் சிக்கல்கள் பற்றிய விவாதம். ஸ்டாக் ஓவர்ஃப்ளோ: PyInstaller மற்றும் Kivy பிழைகள்