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.
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.
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
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
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.
À 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
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.