2014-02-07 1 views
0

hurry 패키지 컬렉션은 hurry.filesizehurry.workflow과 같은 몇 가지 모듈을 제공하며 각각 별도로 설치할 수 있습니다. hurry 모듈의 가져 오기는 어떻게 작동합니까? 파이썬 2.7급한 패키지 가져 오기는 어떻게 작동합니까?

사이트 패키지 디렉토리 구조/

site-packages/ 
    hurry/ 
     filesize/ 
      __init__.py 
      filesize.py 
      tests.py 
      README.txt 
    hurry.filesize-0.9-py2.7-nspkg.pth 
    hurry.filesize-0.9-py2.7.egg-info/ 
     dependency_links.txt 
     ... 

서둘러/ 폴더에는 __init__.py가 없습니다 사용하고 있습니다, 그러나 나는 그것을 가져올 수 있습니다 그것은으로 처리됩니다 내장 모듈.

>>> import hurry 
>>> hurry 
<module 'hurry' (built-in)> 

어떻게 작동합니까? __init__.py 파일이 없는데 hurry을 왜 가져올 수 있습니까? 내 패키지에이 기능을 어떻게 구현할 수 있습니까?

답변

0

마법을 얻었다. 중요한 또한

# this is a namespace package 
try: 
    import pkg_resources 
    pkg_resources.declare_namespace(__name__) 
except ImportError: 
    import pkgutil 
    __path__ = pkgutil.extend_path(__path__, __name__) 

: 그리고 이것은 hurry 패키지의 __init__.py 파일입니다

setup(
    ..., 
    packages=['foo.bar.ham'], 
    namespace_packages=['foo', 'foo.bar'], # <<< 
    ... 
) 
+0

그래서 트릭이 setup.py에서, 그것은으로 패키지'hurry'으로'에게 hurry.filesize' 설치 네임 스페이스 패키지? 여기 'foo'와 'bar'를 사용하고 있는데, 다소 혼란 스럽습니다. – florisla

+0

@florisla 예, 그게 전부입니다. –

관련 문제