2013-09-23 48 views
51

Tôi muốn sử dụng tox để chạy các yêu cầu hủy trong hai virtualenv, vì ứng dụng của tôi phải hỗ trợ 2 phiên bản Python khác nhau.Làm cách nào để chạy độc tố trong một dự án không có setup.py?

Vấn đề của tôi là tox yêu cầu setup.py, nhưng tôi không có gì vì ứng dụng của tôi không phải là mô-đun và có trình cài đặt riêng. Bây giờ tôi không muốn đi qua những rắc rối của tự động hóa quá trình cài đặt như để làm việc với setup.py, tôi chỉ muốn chạy unittests của tôi mà không cần phải viết một setup.py.

Điều đó có khả thi không? Hoặc làm thế nào tôi có thể viết một tập lệnh "rỗng" mà chỉ đơn giản là không làm gì? Bạn có thể chỉ cho tôi một số tài liệu về chủ đề này không (tài liệu distutils giải thích cách viết setup.py có ý nghĩa, không phải là tài liệu trống)?

Trả lời

66

Sau khi đào bới bên trong mã nguồn, tôi tìm thấy một lựa chọn khó ghi nhận ở tox.ini mà bỏ qua sdist:

[tox] 
skipsdist = BOOL # defaults to false 

Thiết này để True tôi nhận được những gì tôi muốn, tiết kiệm cho tôi những nỗ lực của việc viết một ý nghĩa setup.py

+0

Và 'của bạn đang tox.ini' rằng thực sự chạy các bài kiểm tra là gì? – linkyndy

+1

Các thử nghiệm của tôi được chạy với các nosetests: 'commands = nosetests {posargs}' – Kjir

+1

Tôi chạy thử nghiệm Django của mình với 'python manage.py test' để setup.py không cần thiết ở đó. Cảm ơn vì tiền hỗ trợ. –

33

Nếu bạn có một ứng dụng (với một requirements.txt), chứ không phải là một dự án mà bạn đang đi để phân phối (trong đó sẽ có một setup.py thay), bạn tox.ini nên tìm một cái gì đó như thế này:

0.123.
[tox] 
skipsdist = True 

[testenv] 
deps = -r{toxinidir}/requirements.txt 

Tìm thấy câu trả lời này có nguồn gốc từ David Murphy blog: http://blog.schwuk.com/2014/03/19/using-tox-django-projects/

+0

Nếu bạn định làm điều này, bạn cũng có thể đang tìm cách đặt PYTHONPATH, để làm điều này chỉ cần thực hiện 'setenv = # newline \t PYTHONPATH = .' trong [testenv] – ZN13