IT이야기

가져온 모듈의 파일 경로 가져오기

cyworld 2021. 9. 13. 21:49
반응형

가져온 모듈의 파일 경로 가져오기


이 질문에 이미 답이 있습니다.

파이썬에서 가져온 모듈의 파일 경로를 어떻게 얻을 수 있습니까? 저는 Linux를 사용하고 있습니다(중요한 경우).

예: 내 홈 디렉토리에 있고 모듈을 가져오면 내 홈 디렉토리의 전체 경로를 반환해야 합니다.


모듈 및 패키지에는 __file__경로 정보 가 있는 속성이 있습니다. 현재 작업 디렉토리를 기준으로 모듈을 가져온 경우 절대 경로를 원할 것입니다.

import os.path
import my_module

print(os.path.abspath(my_module.__file__))

나는 이것을 사용하고 있습니다 :

import inspect
import os
class DummyClass: pass
print os.path.dirname(os.path.abspath(inspect.getsourcefile(DummyClass))

(편집: 이것은 "나는 어디에 있습니까?" 함수입니다. 현재 모듈이 포함된 디렉토리를 반환합니다. 원하는 것인지 확실하지 않습니다.)


이것은 모듈이 있는 디렉토리를 제공합니다:

import foo
os.path.dirname(foo.__file__)

이미 로드된 모듈의 로드 경로를 찾으려면:

>>> import sys
>>> sys.modules['os']
<module 'os' from 'c:\Python26\lib\os.pyc'>

나는 내장 모듈이 아닌 모듈과 내장 모듈 모두에 적용되는 이 방법을 사용해 왔습니다.

def showModulePath(module):
        if (hasattr(module, '__name__') is False):
            print 'Error: ' + str(module) + ' is not a module object.'
            return None
        moduleName = module.__name__
        modulePath = None
        if imp.is_builtin(moduleName):
            modulePath = sys.modules[moduleName];
        else:
            modulePath = inspect.getsourcefile(module)
            modulePath = '<module \'' + moduleName + '\' from \'' + modulePath + 'c\'>'
        print modulePath 
        return modulePath

예시:

Utils.showModulePath(os)
Utils.showModulePath(cPickle)

결과:

<module 'os' from 'C:\SciSoft\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\lib\os.pyc'>
<module 'cPickle' (built-in)>

여기 늦을 수 있습니다 . 속성을 AttributeError사용 __file__하여 경로를 찾을 일부 모듈이 throw 됩니다 . 이 경우 __path__모듈의 경로를 가져오는 데 사용할 수 있습니다 .

>>> import some_module
>>> somemodule.__path__
['/usr/lib64/python2.7/site-packages/somemodule']

노력하다:

도움말('xxx')

예를 들어

>>> help(semanage)
Help on module semanage:

NAME
    semanage

FILE
    /usr/lib64/python2.7/site-packages/semanage.py

ReferenceURL : https://stackoverflow.com/questions/729583/getting-file-path-of-imported-module

반응형