DedSec Project

Python βιβλιοθήκες: pip, interpreter, import και ABI — DedSec Project

Το πακέτο μπορεί να έχει εγκατασταθεί αλλά να μη φορτώνεται Εντόπισε την Python της προβληματικής εντολής IDE, cron, shell alias και shebang μπορούν να εκκινούν διαφορετικό interpreter από…

Το πακέτο μπορεί να έχει εγκατασταθεί αλλά να μη φορτώνεται

Εντόπισε την Python της προβληματικής εντολής

IDE, cron, shell alias και shebang μπορούν να εκκινούν διαφορετικό interpreter από το κανονικό τερματικό. Πρώτα τύπωσε sys.executable, έκδοση Python και διαδρομή του module που φορτώνεται. Χρησιμοποίησε το -m pip με αυτή την Python, επειδή ένα ξεχωριστό pip στο PATH μπορεί να ανήκει σε άλλη εγκατάσταση.

python -c 'import sys,site;print(sys.executable);print(sys.version);print(site.getsitepackages())'
python -m pip --version
python -m pip show requests
python -c 'import importlib.util;print(importlib.util.find_spec("requests"))'

Τέσσερις διαφορετικές αιτίες

Το ModuleNotFoundError μπορεί να σημαίνει ότι δεν έχει εγκατασταθεί το πακέτο στον ενεργό interpreter, ότι το project έχει αρχείο με ίδιο όνομα ή ότι λείπει προαιρετικό υποmodule. Το ImportError μπορεί να ξεκινά μέσα σε εγκατεστημένη βιβλιοθήκη. Μια native επέκταση ίσως φορτώνεται μόνο στην κατάλληλη αρχιτεκτονική και ABI. Το python -m pip check ελέγχει τις δηλωμένες σχέσεις εξαρτήσεων, αλλά όχι όλες τις δυνατές λειτουργίες.

Ασφαλές πείραμα σκίασης module

Σε προσωρινό directory δημιούργησε δικό σου αρχείο json.py και προσπάθησε να κάνεις import την κανονική βιβλιοθήκη json. Δες το __file__ όπου υπάρχει και εντόπισε την τοπική σύγκρουση ονόματος. Μετονόμασε μόνο το δικό σου αρχείο και καθάρισε δικά του προσωρινά αποτελέσματα. Δεν χρειάζεται διαγραφή global caches.

Διόρθωση και έλεγχος

Χρησιμοποίησε σωστό interpreter, απομονωμένο περιβάλλον όπου υποστηρίζεται και αξιόπιστες πηγές πακέτων. Έλεγξε ελάχιστη πραγματική λειτουργία της βιβλιοθήκης και μετά τα tests του project. Σημείωσε OS, αρχιτεκτονική, Python και pip. Μία επιτυχής εγκατάσταση δεν αποδεικνύει από μόνη της ότι αποκαταστάθηκε η εφαρμογή.