2010-07-30 3 views
1

제가 독자적으로 작성한 스크립트는 몇 가지 수정 된 모듈에 달려 있습니다. 난 그냥 내 ~/bin 디렉토리에 usup 스크립트를 심볼릭 링크하는 경우setup.py 파일을 작성할 때 수정 된 타사 모듈을 어떻게 포함합니까?

client 
    setup.py 
    tsclient 
    __init__.py 
    tsup 
    utils.py 
    mutagen 
     __init__.py 
     blah.py 
     blah.py 
     ... 
    colorama 
     __init__.py 
     blah.py 
     blah.py 
     ... 

현재, 내가 직접 스크립트를 호출 할 수 있습니다 그것은 (문제없이 제대로 모든 수입) 문제없이 작동합니다 디렉토리 구조는 다음과 같습니다.

이제 배포 할 수 있도록 setup.py 스크립트를 만들고 싶습니다. 나는 그것을하는 방법을 알아낼 수 없다.

setup(
    name='tsclient', 
    version='1.0', 
    scripts=['tsclient/tsup'], 
    packages=['tsclient', 'tsclient.mutagen', 'tsclient.colorama'], 
) 

문제는 지금 tsclient.mutagen 때문에 난 그냥 tsup 스크립트에서 import mutagen을 할 수 있다는 것입니다 : 여기에 내가 지금 가지고있는 것입니다. 내가 from tsclient import mutagen 말을 가져 오기를 변경하면 나는 (돌연 변이의 __init__.py 파일)이 오류가 발생합니다 :

ImportError: No module named mutagen._util 

나는 최선의 해결책은 돌연변이 유발을 통해 이동하고 "돌연변이"변화의 모든 단일 인스턴스를 변경하는 것입니다 생각하지 않습니다 그것은 "tsclient.mutagen"입니다. 이게 유일한 방법인가요?

답변

2

불행히도이 작업을 수행하려면 mutagen을 편집해야합니다.

다행히도 Python 2.5 이상에는 수행중인 작업을 정확하게 지원하는 구문이 있습니다.

http://docs.python.org/whatsnew/2.5.html#pep-328-absolute-and-relative-imports을 참조하십시오. 당신이

다음
from . import _util 

상위 레벨 패키지로 계속 작동합니다 말을 변경하는 경우

한다고 가정 돌연변이가 현재 말한다 ,

from mutagen import _util 

; 필요한 경우 하위 패키지로 전체를 이동할 수 있으며 여전히 작동합니다.

가 (당신이 setuptools를 사용하는 경우, 대신 설치 될 패키지가 돌연 변이를 요구하는 setuptools에 말할 수 setup.py에 install_requires= 인수를 추가 할 수 있습니다. 그런 다음 패키지 수 단지 import mutagen 직접.)

관련 문제