2009-11-18 3 views

답변

33

내가 일반적으로 사용하는 방법은 문제의 명령을 무시하는 것입니다

from distutils.command.install import install as DistutilsInstall 

class MyInstall(DistutilsInstall): 
    def run(self): 
     do_pre_install_stuff() 
     DistutilsInstall.run(self) 
     do_post_install_stuff() 

... 

setup(..., cmdclass={'install': MyInstall}, ...) 

이 걸린는 나 꽤 오랫동안 distutils 문서와 출처에서 알아낼 수 있었기 때문에 나는 그것이 당신에게 고통을 덜어주기를 바란다.

참고 :이 cmdclass 매개 변수를 사용하여 새 명령을 추가 할 수도 있습니다.

+1

해답을 보내 주셔서 감사합니다. 고통을 덜어 줬어? 일종의, 나는 이미 너무 많은 시간을이 대답을 찾고 보냈다 ... –

+6

이 답변을 읽은 후에 나는 비슷한 것을 구현했고 꽤 잘 작동한다. (https://github.com/Turbo87/py-xcsoar/blob /master/setup.py). 이 코드는 두 개의 실행 파일을 만드는 Makefile을 실행하고 수정 된 setup.py는이 실행 파일을 시스템에 설치합니다. 어떤 종류의 라이브러리도 설치할 수 있습니다. – TBieniek

+0

이것은 pip에서는 잘 동작하지 않는 것 같지만,'distutils.command.install'을'setuptools.command.install'으로 변경하면 http://stackoverflow.com/questions/15853058/에서 가져옵니다. run-custom-task-when-call-pip-install – wxs

1

파이썬 확장 기능을 빌드하는 경우 distutils/setuptools 확장을 사용할 수 있습니다. 예를 들면 :

from setuptools import Extension 
# or: 
# from distutils.extension import Extension 
setup(... 
     ext_modules = [Extension("pkg.icu", 
           ["icu-sqlite/icu.c"]), 
        ] 
    ) 

, 확장 빌드 문서를 참조 할 수있는 옵션이 많이 있습니다 http://docs.python.org/distutils/setupscript.html

+0

빌드하고 싶은 확장 기능이 아니라 파이썬과 연결되지 않는 C 라이브러리입니다. (이것은 sqlite의 확장입니다.) –

0

distutils를 사용하여 C 라이브러리를 빌드 할 수 있지만 (distutils.core.setup의 libraries 매개 변수 참조), 이미 Makefile에있는 옵션을 복제해야 할 수 있으므로 가장 쉬운 방법은 확장하는 것일 수 있습니다 다른 응답에서 설명한대로 설치 명령을 실행하고 서브 프로세스 모듈을 사용하여 make를 호출하십시오.

관련 문제