참고 : 아래 솔루션은 소스 배포 zip 또는 tarball을 설치하거나 소스 트리에서 편집 가능한 모드로 설치할 때만 작동합니다. 그것은 것입니다 하지 바이너리 휠에서 설치할 때 (작동 .whl
)
이 솔루션은 더 투명합니다.
에 몇 가지를 추가 setup.py
하고 추가 파일이 필요하지 않습니다.
또한 두 가지 다른 설치 후 작업을 고려해야합니다. 하나는 개발 / 편집 가능 모드 용이고 다른 하나는 설치 모드 용입니다.
설치 후 스크립트를 포함하는 다음 두 클래스를 다음에 추가하십시오 setup.py
.
from setuptools import setup
from setuptools.command.develop import develop
from setuptools.command.install import install
class PostDevelopCommand(develop):
"""Post-installation for development mode."""
def run(self):
develop.run(self)
# PUT YOUR POST-INSTALL SCRIPT HERE or CALL A FUNCTION
class PostInstallCommand(install):
"""Post-installation for installation mode."""
def run(self):
install.run(self)
# PUT YOUR POST-INSTALL SCRIPT HERE or CALL A FUNCTION
함수에 cmdclass
인수를 삽입하십시오 .setup()
setup.py
setup(
...
cmdclass={
'develop': PostDevelopCommand,
'install': PostInstallCommand,
},
...
)
설치 전 준비를 수행하는 다음 예제와 같이 설치 중에 쉘 명령을 호출 할 수도 있습니다.
from setuptools import setup
from setuptools.command.develop import develop
from setuptools.command.install import install
from subprocess import check_call
class PreDevelopCommand(develop):
"""Pre-installation for development mode."""
def run(self):
check_call("apt-get install this-package".split())
develop.run(self)
class PreInstallCommand(install):
"""Pre-installation for installation mode."""
def run(self):
check_call("apt-get install this-package".split())
install.run(self)
setup(
...
추신 : setuptools에 사용할 수있는 사전 설치 진입 점이 없습니다. 왜 없는지 궁금하다면 이 토론을 읽으십시오 .