2013-10-23 18 views
7

Hiện tại, chúng tôi đang thiết lập \ cài đặt một số gói trên hệ thống bằng cách đề cập đến phiên bản và phụ thuộc của chúng trong setup.py dưới thuộc tính install_requires. Hệ thống của chúng tôi yêu cầu python 2.7. Đôi khi, người dùng đang có nhiều phiên bản của python nói 2.6.x và 2.7, một số gói nó nói có sẵn nhưng thực sự trên hệ thống có sẵn dưới 2.6 danh sách gói trang web. Ngoài ra một số người dùng chỉ có 2.6, cách thực thi từ setup.py hoặc có cách nào khác để nói chỉ có python 2.7 và tất cả các gói mà chúng tôi muốn setup.py cập nhật chỉ dành cho 2.7. Chúng tôi yêu cầu tối thiểu 2.7 trên máy để chạy mã của chúng tôi.Thực thi phiên bản python trong setup.py

Cảm ơn! Santhosh

Trả lời

8

Như file setup.py được cài đặt thông qua pip (và pip bản thân được điều hành bởi các thông dịch viên python) nó không thể xác định những Python phiên bản để sử dụng trong các tập tin setup.py.

Thay vào đó hãy xem this answer đến setup.py: restrict the allowable version of the python interpreter có cách giải quyết cơ bản để ngừng cài đặt.

Trong trường hợp của bạn mã sẽ là:

import sys 
if sys.version_info < (2,7): 
    sys.exit('Sorry, Python < 2.7 is not supported') 
+0

version_info không giới thiệu các thành phần được đặt tên cho đến 2.7+, nó chỉ là một bộ tuple. Đã gửi chỉnh sửa. – 2upmedia

+3

Tại sao bạn không thể đơn giản làm 'nếu sys.version_info <(2,7)'? Python so sánh các bộ dữ liệu theo thứ tự từ vựng, do đó, điều này sẽ làm việc tốt cho, ví dụ '(3,4,1)'. –

2

Các thực hành tốt nhất hiện nay (như các văn bản này tháng 3 năm 2018) là thêm một đối số python_requires trực tiếp đến setup() cuộc gọi trong setup.py:

from setuptools import setup 

[...] 

setup(name="my_package_name", 
     python_requires='>3.5.2', 
     [...] 
Các vấn đề liên quan