2013-12-08 3 views
2

모듈 foo.py을 썼다고합니다.Python 모듈을 모듈 및 스크립트로 설치하십시오.

나는 그것이 다른 모듈에서 가져올 수 있도록 설치 프로세스가 prefix/lib/pythonX.Y/site-packagesfoo.py를 복사 할뿐만 아니라 foo.py를 가리키는 prefix/bin/foo라는 이름의 심볼릭 링크 (하지 foo.py)를 만들 수 있습니다.

어떻게하면 distutils에이를 알리시겠습니까?

+2

을 , 나는 모듈에'main' 함수를 제공하게 할 것이다. 그럼'foo'를 가져오고 main 함수를 호출하는 별도의 스크립트를 작성하십시오. – mgilson

+0

@mgilson 이것은 [distutils] (http://docs.python.org/2/distutils/)에 어떻게 설정해야하는지에 대한 질문 인 것 같습니다. 모듈과 스크립트로 실행될 수 있도록 코드를 작성하는 방법이 아닌 설명 된대로 심볼릭 링크를 사용하십시오. –

+0

@qwrty - 아마도. 그러나 내가 설명한 방식은 distutils로 이런 종류의 일을 수행하는 전형적인 (그리고 가장지지되는) 방법입니다. 두 가지를 똑같은 스크립트로 강제하는 것보다 훨씬 어려울 수 있습니다. – mgilson

답변

3

setuptools entry_points을 사용하면이 작업을 수행 할 수 있습니다. 다음은 예입니다 :

foo.py

def main(): 
    print "Hello world" 

setup.py

from setuptools import setup 

setup(
    name="foo", 
    version = "0.1", 
    py_modules=['foo'], 
    entry_points = { 
     'console_scripts': ['foo = foo:main'] 
    } 
) 

사용 예제, 모듈은 pip 같은 도구를 사용하여 설치 한 후 : 일반적으로

$ foo 
Hello world 
$ python -c 'import foo; foo.main()' 
Hello world 
관련 문제