Para un módulo de Python puro, puede encontrar la fuente mirando themodule.__file__
. Sin embargo, el módulo de fecha y hora está escrito en C y, por lo tanto, datetime.__file__
apunta a un archivo .so (no existe datetime.__file__
en Windows) y, por lo tanto, no puede ver la fuente.
Si descarga un tarball fuente de Python y lo extrae, el código de los módulos se puede encontrar en el subdirectorio Módulos .
Por ejemplo, si desea encontrar el código de fecha y hora para Python 2.6, puede mirar
Python-2.6/Modules/datetimemodule.c
También puede encontrar la última versión de Mercurial en la web en
https://hg.python.org/cpython/file/tip/Modules/_datetimemodule.c
Ejecutar
python -v
desde la línea de comando debería decirle qué se está importando y de dónde. Esto funciona para mí en Windows y Mac OS X.¡No estoy seguro de cuáles son esos malos mtime en mi instalación!
fuente
built-in
módulos?Me doy cuenta de que esta respuesta lleva 4 años de retraso, pero las respuestas existentes son engañosas.
La forma correcta de hacerlo es nunca
__file__
, o tratar de caminarsys.path
y buscar por ti mismo, etc. (a menos que necesites ser compatible con versiones anteriores más allá de 2.1).Es el
inspect
módulo, en particular,getfile
ogetsourcefile
.A menos que desee aprender e implementar las reglas (que están documentadas, pero son dolorosas, para CPython 2.x, y no están documentadas en absoluto para otras implementaciones, o 3.x) para la asignación
.pyc
a.py
archivos; tratar con archivos .zip, huevos y paquetes de módulos; probando diferentes formas de obtener la ruta a.so
/.pyd
archivos que no son compatibles__file__
; averiguar qué hacen Jython / IronPython / PyPy; En cuyo caso, hazlo.Mientras tanto, la fuente de cada versión de Python desde 2.0+ está disponible en línea en
http://hg.python.org/cpython/file/X.Y/
(por ejemplo, 2.7 o 3.3 ). Entonces, una vez que descubra queinspect.getfile(datetime)
es un archivo.so
o , puede buscarlo dentro del directorio Módulos. Estrictamente hablando, no hay forma de estar seguro de qué archivo define qué módulo, pero casi todos son o , por lo que no debería ser difícil adivinar que datetimemodule.c es lo que desea..pyd
/usr/local/lib/python2.7/lib-dynload/datetime.so
foo.c
foomodule.c
fuente
__file__
no es aplicable para los no incorporados? Entiendo dónde rastrear sys.path puede ser doloroso (especialmente sin saber sobre meta_path), pero ¿le preocupa el espacio de nombres entre__file__
definiciones y binarios?__file__
funciona,inspect.getfile
funciona; no existe una situación en la que adivinar si usar__file__
será mejor que simplemente usar el módulo de inspección.La
sys.path
lista contiene la lista de directorios en los que se buscarán módulos en tiempo de ejecución:fuente
python -c 'import sys; print "\n".join(sys.path)'
le permitirá verlo sin tener que caer en Python interactivo.python -c 'import sys; print("\n".join(sys.path))'
Si está utilizando pip para instalar sus módulos, solo
pip show $module
se devuelve la ubicación.fuente
$module
se entiende como una variable de marcador de posición, no literalmente lo que uno escribiría. Por ejemplo,m=numpy; pip show $m
... etc, para cualquieram
)desde la biblioteca estándar intente imp.find_module
fuente
apt-get remove
DataDog y aún podía importarlo. Esto me ayudó a encontrar dónde estaban los archivos (para poder eliminarlos) cuando las otras soluciones no ayudaron.imp
paquete está en desuso (desde la versión 3.4) a favor deimportlib
(desde 3.1) docs.python.org/3.6/library/imp.htmlimport importlib
entoncesimportlib.util.find_spec('fontTools')
datetime
es un módulo integrado, por lo que no hay un archivo fuente (Python).Para módulos provenientes de
.py
(o.pyc
) archivos, puede usarmymodule.__file__
, por ejemplofuente
En el intérprete de Python, puede importar el módulo en particular y luego escribir ayuda (módulo). Esto proporciona detalles como Nombre, Archivo, Documentos del módulo, Descripción y otros.
Ex:
et al
fuente
Aquí hay una línea para obtener el nombre de archivo de un módulo, adecuado para el alias de shell:
Configurar como un alias:
Usar:
fuente
Nuevo en Python 3.2, ahora puede usar, por ejemplo,
code_info()
desde el módulo dis: http://docs.python.org/dev/whatsnew/3.2.html#disfuente
Consulte este ingenioso comando "cdp" para cd al directorio que contiene la fuente del módulo Python indicado:
fuente
En Windows puede encontrar la ubicación del módulo de Python como se muestra a continuación: es decir, encontrar el módulo rest_framework
fuente
En Ubuntu 12.04, por ejemplo, el paquete numpy para python2, se puede encontrar en:
Por supuesto, esta no es una respuesta genérica
fuente
No todos los módulos de Python están escritos en Python. Datetime resulta ser uno de ellos que no lo es, y (en Linux) es datetime.so.
Tendría que descargar el código fuente a la biblioteca estándar de Python para obtenerlo.
fuente
Para aquellos que prefieren una solución GUI: si está utilizando una interfaz gráfica de usuario como Spyder (parte de la instalación de Anaconda), puede hacer clic con el botón derecho en el nombre del módulo (como "csv" en "importar csv") y seleccionar "ir" a la definición ": esto abrirá el archivo, pero también en la parte superior puede ver la ubicación exacta del archivo (" C: .... csv.py ")
fuente
Si no está utilizando un intérprete, puede ejecutar el siguiente código:
Salida:
El segundo elemento en Array será la ubicación de su paquete. En este caso:
fuente
Otra forma de verificar si tiene múltiples versiones de Python instaladas, desde la terminal.
-MBP: ~ python3 -m pip show pyperclip
Ubicación: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
MBP: ~ python -m pip show pyperclip
Ubicación: /Users/umeshvuyyuru/Library/Python/2.7/lib/python/site-packages
fuente
En un IDE como Spyder, importe el módulo y luego ejecútelo individualmente. ingrese la descripción de la imagen aquí
fuente
str()
modelo es una descripción más precisa de lo que está haciendo en la captura de pantalla, además el IDE parece irrelevante para esta solución