2013-06-24 2 views
4

J'ai vu l'opérateur tripoter-Wakka (~>) utilisé dans le fichier de gemme de rubis (documentation) pour spécifier la dernière version du point compatible comme celui-ci:Quel est l'équivalent de twiddle-wakka (~>) de la gemme de ruby ​​dans requirements.txt pour python's pip?

'~> 0.3.1' is satisfied by 0.3.1, 0.3.2, 0.3.3, etc. 
'~> 0.3.1' is not satisfied by 0.3.0 
'~> 0.3' is satisfied by 0.3.1, 0.4.0, 0.5.1, etc. 
'~> 0.3' is not satisfied by 0.2.0, 0.2.1, etc. 

Je vois qu'il ya un opérateur >= dans le requirements.txt Cela peut être utilisé pour spécifier quelque chose de mieux que cela, mais j'espère éviter que les futures mises à jour de paquets (mises à jour de versions majeures) ne soient pas rétrocompatibles avec mon code - c'est pourquoi je veux un twink-wakka.

Existe-t-il un opérateur équivalent pour pip?

+0

Vos exemples sont un peu étranges. Êtes-vous en train de dire que, par exemple, '~> 0.3.1' n'est * pas * satisifié par 0.4? – BrenBarn

+0

@BrenBarn correct. '~>' regarde l'identifiant de version le moins significatif. – Nitrodist

Répondre

7

Un jour, ce sera ~= le compatible-release operator specified by PEP 440, mais aucun des outils courants de Python ne le supporte encore - pas pip, ni le nouveau-né setuptools unfork.

Pour l'instant, vous devez spécifier manuellement, par exemple,

Django >= 1.4.3, < 1.5 
+0

Cette syntaxe est-elle également acceptable? 'Django> = 1.4.3, == 1.4. *' – Nitrodist

+0

Il semble qu'il ne soit pas encore compatible avec 'pip 1.3.1'. – Nitrodist

+0

@Nitrodist Non, pip ne semble pas non plus gérer les caractères génériques. '> =' et '<' fonctionnent quand même. Il est un gâchis, mais ça devient certainement mieux, et maintenant qu'il ya [spécifications propres] (http://www.python.org/dev/peps/pep-0440/) qui finira par être mis en œuvre, il sera un jour grand. – andrewdotn

Questions connexes