Tôi đã cố gắng định cấu hình gói của mình sao cho tập lệnh được thực thi trong quá trình cài đặt. Do đó, tôi được kế thừa từ setuptools.command cài đặt và tạo lớp tùy chỉnh của tôi ActionOnInstall
để làm việc khi gói được cài đặt. Lớp này được gọi qua đối sốđối sốnhư được mô tả here.Sự khác nhau giữa pip3 và `python3 setup.py install` liên quan đến đối số cmdclass
Một ví dụ tối thiểu của một tập tin setup.py như trông giống như
from setuptools import find_packages, setup
from setuptools.command.install import install
class ActionOnInstall(install):
def run(self):
print("Call install.run(self) works!")
install.run(self)
setup(name='name',
cmdclass={
'install': ActionOnInstall})
Xây dựng gói bằng cách thực hiện
pip3 install <path-to-dir-with-setup.py>
chạy thành công nhưng không thực hiện các lệnh quy định tại ActionOnInstall.run()
. Trực tiếp gọi hàm này setup.py bằng cách
python3 setup.py install
thực hiện các lệnh được chỉ định trong ActionOnInstall.run()
.
Sau đó, tôi thấy mình hỏi: sự khác biệt thực sự của cả hai phương pháp này để cài đặt gói. Tôi biết, giống như các bài viết khác cho chúng tôi biết, pip làm cho cuộc sống dễ dàng hơn liên quan đến cài đặt gói. Nhưng làm thế nào cả hai cách tiếp cận này đối xử với các đối số cmdclass
của setup()
khác nhau không được giải thích. Vì vậy, tôi rất cảm kích khi được nghe từ các bạn.