모듈은 어디에서 가져 오나요?
두 개의 Python 모듈이 있고 path_b가 가져 오기 경로에 있다고 가정합니다.
# file: path_b/my_module.py
print "I was imported from ???"
#file: path_a/app.py
import my_module
모듈을 가져 오는 위치를 볼 수 있습니까? app.py를 시작하면 "path_a / app.py에서 가져 왔습니다"와 같은 출력을 원합니다 (파일 이름이 필요하기 때문).
편집 : 더 나은 이해를 위해; 다음과 같이 쓸 수 있습니다.
# file: path_b/my_module.py
def foo(file):
print "I was imported from %s" % file
#file: path_a/app.py
import my_module
my_module.foo(__file__)
따라서 출력은 다음과 같습니다.
$> python path_app.py
I was imported from path_a/app.py
이 작업을 수행하는 더 쉬운 방법이있을 수 있지만 다음과 같이 작동합니다.
import inspect
print inspect.getframeinfo(inspect.getouterframes(inspect.currentframe())[1][0])[0]
경로는 스크립트 위치의 상위 디렉토리 인 경우 현재 작업 디렉토리를 기준으로 인쇄됩니다.
이 시도:
>>> import my_module
>>> my_module.__file__
'/Users/myUser/.virtualenvs/foobar/lib/python2.7/site-packages/my_module/__init__.pyc'
편집하다
이 경우 __init__.py
모듈 의 파일에 쓰 십시오.
print("%s: I was imported from %s" %(__name__, __file__))
my_module.__file__
그것이 어디에서 왔는지 알아 보십시오 . 를 받으면 AttributeError
아마도 Python 소스 (.py) 파일이 아닐 것입니다.
또한 f
모듈에서 함수 / 클래스 가있는 m
경우 모듈을 사용하여 모듈의 경로를 가져올 수 있습니다.inspect
import inspect
from m import f
print inspect.getmodule(f)
간단한 스크립트를 작성 했으므로 pywhich
Python 모듈의 출처를 찾을 수 있는 명령 이 있습니다. \__file__
속성 이없는 sys와 같은 일부 내장 기능에서는 작동하지 않습니다 .
Linux 명령 줄에서 실행하여 현재 환경에서 실행되는 Python 스크립트가 모듈을 가져올 위치를 찾을 수 있습니다. 예를 들면 다음과 같습니다.
% pywhich os
#! /usr/bin/env python
def pywhich(module_name):
module = __import__(module_name, globals(), locals(), [], 0)
return module.__file__
if __name__ == "__main__":
import sys
print(pywhich(sys.argv[1]))
예를 들어 모듈이 저장된 위치를 보려면 다음을 입력하십시오 setuptools
.
$ python -c "import setuptools; print(setuptools.__file__)"
이것이 내가하는 방법입니다.
print(module_name.__path__)
다른 답변은 괜찮지 만 가져온 모듈 내부 에서 알려주려면 다음을 수행하십시오.
print "I was imported from %s" % __file__
참고 URL : https://stackoverflow.com/questions/7150998/where-is-module-being-imported-from
'program tip' 카테고리의 다른 글
setUp / tearDown (@ Before / @ After) 왜 JUnit에서 필요한가요? (0) | 2020.12.01 |
---|---|
Py_Initialize 실패-파일 시스템 코덱을로드 할 수 없음 (0) | 2020.12.01 |
JBehave와 Cucumber의 차이점은 무엇입니까? (0) | 2020.12.01 |
.csproj 어셈블리에 대한 다중 힌트 경로 (0) | 2020.12.01 |
파이썬에서 int를 Enum으로 변환하는 방법은 무엇입니까? (0) | 2020.12.01 |