Para um módulo python puro, você pode encontrar a fonte olhando themodule.__file__
. O módulo datetime, no entanto, é escrito em C e, portanto, datetime.__file__
aponta para um arquivo .so (não existe datetime.__file__
no Windows) e, portanto, você não pode ver a fonte.
Se você baixar um tarball de origem python e extraí-lo, o código dos módulos pode ser encontrado no subdiretório Módulos .
Por exemplo, se você deseja encontrar o código de data e hora para o python 2.6, pode ver
Python-2.6/Modules/datetimemodule.c
Você também pode encontrar a versão mais recente do Mercurial na Web em
https://hg.python.org/cpython/file/tip/Modules/_datetimemodule.c
A execução
python -v
na linha de comando deve informar o que está sendo importado e de onde. Isso funciona para mim no Windows e no Mac OS X.Não sei ao certo quais são esses momentos ruins na minha instalação!
fonte
built-in
módulos?Sei que esta resposta está atrasada 4 anos, mas as respostas existentes são pessoas enganosas.
A maneira correta de fazer isso é nunca
__file__
, ou tentar percorrersys.path
e procurar você mesmo, etc. (a menos que você precise ser compatível com versões anteriores a 2.1).É o
inspect
módulo - em particular,getfile
ougetsourcefile
.A menos que você queira aprender e implementar as regras (que são documentadas, mas dolorosas, para o CPython 2.xe não são documentadas para outras implementações, ou 3.x) para mapear
.pyc
para.py
arquivos; lidar com arquivos .zip, ovos e pacotes de módulos; tentando maneiras diferentes de obter o caminho para.so
/.pyd
arquivos que não suportam__file__
; descobrir o que o Jython / IronPython / PyPy faz; etc. Nesse caso, vá em frente.Enquanto isso, a fonte de todas as versões Python do 2.0+ está disponível online em
http://hg.python.org/cpython/file/X.Y/
(por exemplo, 2.7 ou 3.3 ). Assim, depois de descobrir queinspect.getfile(datetime)
é um arquivo.so
ou , você pode procurá-lo dentro do diretório Modules. Estritamente falando, não há como ter certeza de qual arquivo define qual módulo, mas quase todos são ou , portanto, não deve ser difícil adivinhar que datetimemodule.c é o que você deseja..pyd
/usr/local/lib/python2.7/lib-dynload/datetime.so
foo.c
foomodule.c
fonte
__file__
não é aplicável a não integrados? Entendo onde o rastreamento do sys.path pode ser doloroso (especialmente sem saber sobre o meta_path), mas a sua preocupação com o namespacing entre__file__
definições e binários?__file__
funciona,inspect.getfile
funciona; não há situação em que adivinhar se__file__
será melhor do que apenas usar o módulo de inspeção.A
sys.path
lista contém a lista de diretórios que serão pesquisados por módulos em tempo de execução:fonte
python -c 'import sys; print "\n".join(sys.path)'
permitirá que você veja sem ter que usar o python interativo.python -c 'import sys; print("\n".join(sys.path))'
Se você estiver usando o pip para instalar seus módulos, apenas
pip show $module
o local será retornado.fonte
$module
foi concebido como uma variável espaço reservado, não literalmente o que se digita Por exemplo,.m=numpy; pip show $m
... etc, para qualquerm
)da biblioteca padrão, tente imp.find_module
fonte
apt-get remove
o DataDog e ainda podia importá-lo. Isso me ajudou a encontrar onde estavam os arquivos (para que eu pudesse excluí-los) quando as outras soluções não ajudaram.imp
pacote é preterido (uma vez que a versão 3.4) em favor doimportlib
(desde 3,1) docs.python.org/3.6/library/imp.htmlimport importlib
entãoimportlib.util.find_spec('fontTools')
datetime
é um módulo interno, portanto, não há arquivo de origem (Python).Para módulos provenientes de
.py
(ou.pyc
) arquivos, você pode usarmymodule.__file__
, por exemplo,fonte
No interpretador python, você pode importar o módulo específico e digitar help (módulo). Isso fornece detalhes como Nome, Arquivo, Documentos do módulo, Descrição e outros.
Ex:
et al
fonte
Aqui está uma lista para obter o nome do arquivo para um módulo, adequado para aliasing de shell:
Configure como um alias:
Usar:
fonte
Novo no Python 3.2, agora você pode usar, por exemplo,
code_info()
no módulo dis: http://docs.python.org/dev/whatsnew/3.2.html#disfonte
Confira este comando bacana "cdp" para cd no diretório que contém a fonte do módulo Python indicado:
fonte
No Windows, você pode encontrar a localização do módulo python, como mostrado abaixo: ou seja, encontrar o módulo rest_framework
fonte
No Ubuntu 12.04, por exemplo, numpy package for python2, pode ser encontrado em:
Obviamente, essa não é uma resposta genérica
fonte
Nem todos os módulos python são escritos em python. Datetime é um deles que não é, e (no linux) é datetime.so.
Você precisaria fazer o download do código-fonte na biblioteca padrão do python para acessá-lo.
fonte
Para aqueles que preferem uma solução gráfica: se você estiver usando uma interface gráfica como o Spyder (parte da instalação do Anaconda), clique com o botão direito do mouse no nome do módulo (como "csv" em "import csv") e selecione "ir" para definição "- isso abrirá o arquivo, mas também na parte superior você pode ver o local exato do arquivo (" C: .... csv.py ")
fonte
Se você não estiver usando o intérprete, poderá executar o código abaixo:
Resultado:
O segundo elemento na matriz será o local do seu pacote. Nesse caso:
fonte
Outra maneira de verificar se você tem várias versões python instaladas, a partir do terminal.
-MBP: ~ python3 -m pip mostra pyperclip
Local: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
MBP: ~ python -m pip mostra pyperclip
Local: /Users/umeshvuyyuru/Library/Python/2.7/lib/python/site-packages
fonte
Em um IDE como o Spyder, importe o módulo e execute-o individualmente. insira a descrição da imagem aqui
fonte
str()
modelo é uma descrição mais precisa do que você está fazendo na captura de tela, além do IDE parecer irrelevante para esta solução