web-dev-qa-db-fra.com

Python 3 support pour fabric

Est-ce que fabric ( http://docs.fabfile.org/en/1.7/ ) prend en charge Python 3 pour le moment. Selon Python 3 Wall of Superpowers) ce n'est pas encore le cas. Sinon, quelle est la meilleure alternative si vous utilisez Django 1.5 avec Python 3.

51
jethar

Réponse actuelle qui a déjà été effectuée par @ miso.belica

pip install -U "fabric>2.0.0"

VIEILLE réponse (à partir de 2013)

De la documentation:

Veuillez noter que toute la documentation est actuellement écrite avec les utilisateurs de Python 2.5 à l'esprit, mais avec un œil pour l'éventuelle compatibilité Python 3.x)

Ou pour être plus précis:

éventuel Python 3.x compatibilité

Il semble que la prise en charge de Python3 pour le tissu soit un peu collante et dépend d'une autre bibliothèque open source, paramiko étant compatible avec python3. À partir de maintenant, la version principale prend en charge python 3.

Il vaut peut-être la peine de jouer avec, puis de créer votre instance de tissu par-dessus au lieu de l'obtenir à partir de pip.

35
Greg

Il semble qu'il existe un port Python3 de Fabric nommé Fabric qui prend en charge Python 2.7 et 3.4+ (prise en charge supprimée pour Python <2.7) Je l'utilise un certain temps en remplacement et cela fonctionne pour moi sans aucun problème.

pip3 install fabric3

Il semble qu'il existe déjà officiellement prise en charge de Python 3.4+ dans Fabric v2 + et je suppose cela devrait être préféré bien qu'il puisse y en avoir - changements incompatibles . Donc dans un monde idéal, personne ne devrait plus avoir ce problème :)

pip3 install -U fabric
90
Mišo

Vous pouvez également créer un virtualenv python2.7 distinct juste pour la structure:

Sudo virtualenv --no-site-packages -p /usr/bin/python fabric-env
source /var/www/APPNAME/fabric-env/bin/activate
Sudo /var/www/APPNAME/fabric-env/bin/pip install fabric
deactivate

Ensuite:

/var/www/APPNAME/fabric-env/bin/fab -f /var/www/APPNAME/fabfile.py FAB_COMMAND
17
Jeremy T

Il semble que Fabric passe par une réécriture et que Fabric 2.0 sera python 3.x compatible. Au moins c'est ce que j'ai lu entre la ligne de la feuille de route ci-dessous. Cependant, je ne trouve pas le référentiel ou la branche Fabric 2.0, donc difficile à confirmer complètement.

http://www.fabfile.org/roadmap.html

7
Jeremy Chone

À ce jour, "fabric 2" est disponible pour fonctionner avec python 3+.

"tissu 3" est une fourchette non officielle.

Pour installer "fabric 2" depuis https://pypi.org/project/Fabric/ :

pip install Fabric
2
Valery Ramusik

Il est en fait possible de faire fonctionner Fabric avec Python 3. Vous pouvez voir comment je l'ai fait dans this Gist .

Dans les commentaires ci-dessus, @rnevius suggère que l'invocation est conçue comme un successeur de Fabric 1.x, mais ce n'est pas complètement correct. À partir des documents d'invocation:

Ainsi, Invoke a été créé pour se concentrer exclusivement sur les préoccupations locales et abstraites, laissant Fabric 2.x uniquement concerné par les serveurs et les commandes réseau.

Il semble donc que Fabric 2.x sera construit au-dessus de invoke. Avec un peu de chance, Fabric 2.x sera bientôt disponible, donc Python2 peut mourir le plus rapidement possible.

2
mok0