source

Python 모듈 소스의 위치를 찾으려면 어떻게 해야 합니까?

manycodes 2023. 2. 7. 00:05
반응형

Python 모듈 소스의 위치를 찾으려면 어떻게 해야 합니까?

특정 Python 모듈의 소스 파일이 설치된 위치를 어떻게 알 수 있습니까?Windows 에서는 Linux 에서는 방법이 다른가요?

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★의 출처를 찾고 있습니다datetime특히 모듈입니다만, 보다 일반적인 답변에도 관심이 있습니다.

를 알 수.themodule.__file__모듈은되어 있기 에 datetime C로 기술되어 있습니다datetime.__file__ 파일을 (.so 파일이 ).datetime.__file__Windows 의 windows 、 그 windows 、 windows windows 、 windows windows windows windows windows windows windows windows windows windows windows.

python 소스 tarball을 다운로드하여 추출하면 Modules 하위 디렉토리에서 모듈의 코드를 찾을 수 있습니다.

예를 들어 python 2.6의 datetime 코드를 찾으려면

Python-2.6/Modules/datetimemodule.c

이 파일의 최신 버전은 웹 사이트(https://github.com/python/cpython/blob/main/Modules/_datetimemodule.c)의 github에서도 찾을 수 있습니다.

.python -v수입하다Windows ® Mac OS X windows windows windows windows 。

C:\>python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# C:\Python24\lib\site.pyc has bad mtime
import site # from C:\Python24\lib\site.py
# wrote C:\Python24\lib\site.pyc
# C:\Python24\lib\os.pyc has bad mtime
import os # from C:\Python24\lib\os.py
# wrote C:\Python24\lib\os.pyc
import nt # builtin
# C:\Python24\lib\ntpath.pyc has bad mtime
...

내 설치물에 그 나쁜 시간들이 뭔지 모르겠어!

이 답변이 4년 늦은 것은 알지만, 기존의 답변은 사람들을 오도하고 있습니다.

하지 않는 것입니다.__file__ ''를 읽습니다sys.path직접 검색하는 등(2.1 이후 하위 호환성이 필요한 경우는 제외)

모듈, 특히getfile ★★★★★★★★★★★★★★★★★」getsourcefile.

맵핑 2.에 대해서는는 전혀 문서화되어 있지 것,3.에 대해서는 문서화되어 있지 않은 것을하고, 「」(CPython 2.x」는 「CPython 2.x」의 3」의 맵핑 규칙을 학습해 실장합니다..pyc로로 합니다..py . 아카이브및; ; .zip, 에그, 모듈패키지.so/.pyd되지 않는 __file__Jython/IronPython/PyPy의 기능 파악 등그렇다면, 그렇게 해.

2.0부터의 모든 Python 는, 할 수 있습니다.Python 버전은 2.0+입니다.http://hg.python.org/cpython/file/X.Y/(예: 2.7 또는 3.3).그래서 일단 그걸 알게 되면inspect.getfile(datetime)는 입니다..so ★★★★★★★★★★★★★★★★★」.pyd로 정렬하다/usr/local/lib/python2.7/lib-dynload/datetime.so모듈 디렉토리에서 검색할 수 있습니다. 말하면 모듈을 수 모든 모듈인지 알 수 없습니다.foo.c ★★★★★★★★★★★★★★★★★」foomodule.c그래서 datetimemodule.c가 당신이 원하는 것이라고 추측하는 것은 어렵지 않을 것입니다.

하는 경우 pip만 하십시오.pip show $module로케이션이 반환됩니다.

sys.path런타임에 목록이 .

python -v
>>> import sys
>>> sys.path
['', '/usr/local/lib/python25.zip', '/usr/local/lib/python2.5', ... ]

표준 라이브러리에서 imp.find_module을 실행합니다.

>>> import imp
>>> imp.find_module('fontTools')
(None, 'C:\\Python27\\lib\\site-packages\\FontTools\\fontTools', ('', '', 5))
>>> imp.find_module('datetime')
(None, 'datetime', ('', '', 6))

datetimePython(피톤)을 사용하다

에서 온 .py (오류).pyc 할 수 .mymodule.__file__

> import random
> random.__file__
'C:\\Python25\\lib\\random.pyc'

셸 에일리어스에 적합한 모듈의 파일명을 취득하기 위한 원라이너를 다음에 나타냅니다.

echo 'import sys; t=__import__(sys.argv[1],fromlist=[\".\"]); print(t.__file__)'  | python - 

별칭으로 설정:

alias getpmpath="echo 'import sys; t=__import__(sys.argv[1],fromlist=[\".\"]); print(t.__file__)'  | python - "

사용 방법:

$ getpmpath twisted
/usr/lib64/python2.6/site-packages/twisted/__init__.pyc
$ getpmpath twisted.web
/usr/lib64/python2.6/site-packages/twisted/web/__init__.pyc

python interpreter에서 특정 모듈을 Import한 후 help(module)를 입력할 수 있습니다.이름, 파일, 모듈 문서, 설명 등의 세부 정보를 제공합니다.

예:

import os

help(os)


Help on module os:

NAME

os - OS routines for Mac, NT, or Posix depending on what system we're on.

FILE

/usr/lib/python2.6/os.py

MODULE DOCS

http://docs.python.org/library/os

DESCRIPTION

This exports:

- all functions from posix, nt, os2, or ce, e.g. unlink, stat, etc.

- os.path is one of the modules posixpath, or ntpath

- os.name is 'posix', 'nt', 'os2', 'ce' or 'riscos'

할 수 Windows 의 python 을 찾을 수 있습니다.여기에 이미지 설명 입력

Python 3.2는 Python 3.2를 사용하고 있습니다. code_info()dis 모듈: http://docs.python.org/dev/whatsnew/3.2.html#dis

다음 nifty "cdp" 명령어를 체크하여 표시된 Python 모듈의 소스를 포함하는 디렉토리에 cd합니다.

cdp () {
  cd "$(python -c "import os.path as _, ${1}; \
    print _.dirname(_.realpath(${1}.__file__[:-1]))"
  )"
}

Ubuntu 12.04 에서는, 예를 들면 python2 용 numpy 패키지가 다음의 URL 에 있습니다.

/usr/lib/python2.7/dist-packages/numpy

물론 일반적인 답변은 아닙니다.

지금 누군가 필요할 때를 대비해서 답변을 업데이트하고 있습니다. 저는 Python 3.9에 있으며 패키지를 관리하기 위해 Pip을 사용하고 있습니다. 쓰세요.pip show 예: 개요:

pip show numpy

pip이 다른 모든 패키지를 보관하고 있는 위치에 대한 모든 세부 정보가 표시됩니다.

터미널에서 여러 python 버전이 설치되어 있는지 확인하는 또 다른 방법입니다.

$ python3 -m pip show pyperclip

위치: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-

$ python -m pip show pyperclip

위치: /Users/umeshvuyuru/Library/Python/2.7/lib/python/site-packages

모든 python 모듈이 python으로 작성되는 것은 아닙니다.Datetime은 그렇지 않은 것 중 하나이며 (Linux에서는) datetime.so 입니다.

python 표준 라이브러리에 소스 코드를 다운로드해야 합니다.

GUI 솔루션을 원하는 사용자: Spyder(Anaconda 설치의 일부)와 같은 GUI를 사용하는 경우 모듈 이름("import csv"의 "csv" 등)을 마우스 오른쪽 버튼으로 클릭하고 "go to definition"을 선택하면 됩니다.이렇게 하면 파일이 열리게 됩니다.또한 맨 위에 정확한 파일 위치("C:....csv.py")도 표시됩니다.

인터프리터를 사용하지 않는 경우는, 다음의 코드를 실행할 수 있습니다.

import site
print (site.getsitepackages())

출력:

['C:\\Users\\<your username>\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\<your username>\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages']

어레이의 두 번째 요소는 패키지 위치입니다.이 경우:

C:\Users\<your username>\AppData\Local\Programs\Python\Python37\lib\site-packages

Spyder와 같은 IDE에서는 모듈을 Import하여 개별적으로 실행합니다.여기에 이미지 설명 입력

위에서 python으로 기술한 바와 같이 help(python)를 사용합니다.

수입분율

help(실행)

fractes 예제에서 모듈이 설치되어 있는 경우 모듈 위치와 정보를 알려줍니다. 모듈이 설치되어 있지 않으면 모듈을 사용할 수 없습니다.라고 표시됩니다.

사용할 수 없는 경우 기본적으로는 python과 함께 제공되지 않습니다.이 경우 다운로드 정보는 어디서 찾았는지 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/269795/how-do-i-find-the-location-of-python-module-sources

반응형