2013-03-15 54 views
11

Câu hỏiLàm cách nào để chạy tệp tập lệnh như một phần của cài đặt python setup.py?

tôi biết làm thế nào để sử dụng setup.py với setuptools đăng ký một kịch bản. Làm cách nào để chạy một tệp tập lệnh khác (giả sử tệp make) là một phần của số python setup.py install.

nền

Tôi tưởng tượng rằng tôi sẽ sử dụng một cái gì đó như:

os.system('make maketarget') #from somewhere in the package 

Nhưng setuptools.setup nhận một dict vì vậy tôi không thể chỉ cần thêm dòng này bên setup()/và tôi cần những kịch bản để chạy sau khi gói cơ bản được cài đặt bởi setup.py install.

Tôi biết tôi có thể thêm lệnh vào setup.py nhưng tôi muốn tập lệnh này được gọi bên trong bước cài đặt.

Tôi cũng có thể mặc định chỉ đặt một:

if sys.argv[-1] == 'install': 
    os.system('do something in the shell') 

và chỉ cần đặt khối này sau khi cài đặt(), nhưng bằng cách nào đó điều này không trông rất pytonic (và cũng dễ gây lỗi, tôi cần phải tìm nơi gói này được cài đặt chính xác, vv)

Trả lời

6

Bạn có thể phân lớp lệnh cài đặt hiện tại từ các công cụ thiết lập và mở rộng nó bằng chức năng mong muốn. Sau đó, bạn có thể đăng ký nó làm lệnh cài đặt trong chức năng thiết lập:

from setuptools.command.install import install 

class MyInstall(install): 

    def run(self): 
     install.run(self) 
     print("\n\n\n\nI did it!!!!\n\n\n\n") 

# in the setup function: 
cmdclass={'install': MyInstall} 

Thay vì lệnh in chỉ cần gọi tập lệnh của bạn.

Xin lưu ý rằng có nhiều cách để đóng gói phần mềm python (trứng, v.v.). Tập lệnh của bạn sẽ không được gọi cho những cách này nếu bạn chỉ gọi nó trong bước cài đặt.

Các vấn đề liên quan