Lưu ý: Giải pháp bên dưới chỉ hoạt động khi cài đặt zip phân phối nguồn hoặc tarball hoặc cài đặt ở chế độ có thể chỉnh sửa từ cây nguồn. Nó sẽ không hoạt động khi cài đặt từ bánh xe nhị phân ( .whl
)
Giải pháp này minh bạch hơn:
Bạn sẽ thực hiện một số bổ sung setup.py
và không cần thêm tệp.
Ngoài ra, bạn cần phải xem xét hai cài đặt sau khác nhau; một cho chế độ phát triển / có thể chỉnh sửa và một cho chế độ cài đặt.
Thêm hai loại cổ phiếu này bao gồm các bạn sau khi cài đặt kịch bản để 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
và chèn cmdclass
đối số vào setup()
hàm trong setup.py
:
setup(
...
cmdclass={
'develop': PostDevelopCommand,
'install': PostInstallCommand,
},
...
)
Bạn thậm chí có thể gọi các lệnh shell trong khi cài đặt, như trong ví dụ này chuẩn bị trước khi cài đặt:
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(
...
PS không có bất kỳ điểm nhập cài đặt trước nào có sẵn trên các công cụ thiết lập. Đọc cuộc thảo luận này nếu bạn đang tự hỏi tại sao không có.