2012-07-08 21 views
24

Volevo provare a cercare la fonte di alcuni dei moduli nella libreria standard Python, ma non sono riuscito a trovarli. Ho provato a cercare nella directory dei moduli dopo aver scaricato il tarball python, ma ha principalmente file .c. Ho anche provato a guardare la directory in cui il python che già viene fornito con il sistema operativo (mac osx) ha i suoi moduli e sembra che abbia principalmente file .pyc e .pyo. Lo apprezzerei davvero se qualcuno potesse aiutarmi.Dove trovo il codice della libreria standard Python?

(ho provato quello che è stato suggerito nella questione How do I find the location of Python module sources? senza fortuna)

+0

oh ah, ho letto da qualche parte che un buon modo per imparare quanto è buono il codice Python è quello di leggere il codice della libreria standard. Credo di aver frainteso. È tutto in C? – iman453

+0

Parti critiche per le prestazioni? Certo, vogliamo prestazioni dopo tutto. Comunque, non è male il codice C;) Ancora abbastanza cose scritte in python in cpython. – Voo

risposta

27

In CPython, molti moduli sono implementati in C, e non in Python. Puoi trovarli in Modules/, mentre quelli in puro Python risiedono in Lib/.

In alcuni casi (ad esempio il modulo json), il codice sorgente Python fornisce il modulo da solo e utilizza il modulo C solo se disponibile (per migliorare le prestazioni). Per i moduli rimanenti, è possibile dare un'occhiata a PyPy's implementations.

+0

Ah, eccolo. Avrei dovuto guardarmi intorno prima di fare la domanda. Grazie! Accetterà la risposta una volta che il limite di tempo mi consentirà. – iman453

-1

È possibile ottenere il codice sorgente dei moduli Python puri che fanno parte della libreria standard dalla posizione in cui è installato Python.

Per esempio: C: \ Python27 \ Lib (su Windows) se si è utilizzato Windows Installer per Python installazione.

1
+0

Non sono sicuro se questo risponda alla domanda dell'OP. @ iman453 ha già un archivio; la loro domanda riguarda quali * file * in quel tarball sono interessanti. Sono anche un po 'perplesso riguardo a questa risposta poiché credo di aver già indicato il repository Mercurial in [la mia risposta accettata] (http://stackoverflow.com/a/11385592/35070), anche se non ho menzionato il Specchio GitHub. – phihag

+2

GitHub è ora la fonte della verità (si veda [PEP 512] (https://www.python.org/dev/peps/pep-0512/)). –

0

Cercare nella sottodirectory Lib della directory di installazione di Python.

Problemi correlati