2012-12-18 9 views
21

Mam bibliotekę Pythona. Niestety nie zaktualizowałem go do pracy z pythonem 3 jeszcze.setup.py: ogranicza dozwoloną wersję interpretera pythonów

w setup.py, dodałem

install_requires=['python<3'], 

Moim zamiarem było, aby nie pozwolić ten pakiet do zainstalowania/używane pod python 3, bo wiem, że nie jest (jeszcze) praca. Nie sądzę, jest to właściwy sposób, aby to zrobić, ponieważ pip następnie próbuje pobrać i zainstalować Pythona 2.7.3 (który jest już zainstalowany wersja!).

Jak określić zależność mojej biblioteki od konkretnego zakresu wersji interpretera python? Czy powinienem dodać znacznik Programming Language :: Python :: 2 :: Only? Czy to faktycznie uniemożliwi instalację w pythonie 3? Co się stanie, jeśli chcę ograniczyć minimalną wersję do Pythona 2.6?

Wolałbym rozwiązanie, które działa wszędzie, ale będzie zadowolić się takim, które działa tylko w pip (i mam nadzieję, że nie spowoduje to dezinstalacji easy_install).

+0

Odpowiedź na to pytanie: http://stackoverflow.com/questions/13385337/distribute-distutils-specify-python-version – shakefu

Odpowiedz

10

od version 9.0.1 PIP będzie cześć nowego python_requires łańcuch, określa wersję Pythona wymagana do instalacji, np:

setup(
    ..., 
    python_requires=">=3.3" 
) 

Aby uzyskać więcej informacji, patrz here. Zobacz także ten answer na SO.

15

możliwym rozwiązaniem jest testu dla wersji Pythona, ponieważ PIP nie może zaspokoić wersji Pythona z wyjątkiem wersji to aktualnie uruchomionego w (instaluje w obecnym środowisku Pythona):

import sys 
if not sys.version_info[0] == 2: 
    sys.exit("Sorry, Python 3 is not supported (yet)") 

setup(... 
+2

To prawda, że ​​zadziała. Byłoby o wiele ładniej mieć coś wbudowanego w zależności, tak aby pip wiedział z góry, aby nie kłopotać się ściąganiem i uruchamianiem instalatora. – gfxmonk

+0

Dlaczego nie oba? Twoja odpowiedź brzmi: czego nie należy robić * nie *, ale raczej polegaj na wbudowanych funkcjach, chociaż użycie tej odpowiedzi * dodatkowo * do 'python_requires' byłoby świetne! Możesz to zaktualizować? – Mayou36