Migration Python de la version 10.x vers ArcGIS Pro — ArcPy – Mise en route – Serveur d’impression
ArcGIS Pro utilise Python 3. Il s’agit d’un changement important par rapport aux autres produits ArcGIS, notamment ArcGIS Desktop, ArcGIS Serveret ArcGIS Engine, qui ont utilisé (et continueront d’utiliser) les versions dans la ligne Python 2. La ligne de versions de Python 3 est une ligne différente incompatible avec la ligne de Python 2. Même si, fondamentalement, le langage est en grande partie identique, de nombreux détails clés ont considérablement changé, notamment le fonctionnement des chaînes et des dictionnaires et l'organisation de la bibliothèque standard.
Python 3 est en développement actif depuis plus de cinq ans et a coexisté avec Python 2 à l’instar de la communauté Python. À l'heure actuelle, la majorité des principales bibliothèques tierces ont été transférées sur Python 3 et, dans la communauté Python, le consensus est que tous les nouveaux projets de développement seront réalisés dans Python 3.
Sommaire
De quoi ai-je besoin pour que mes scripts fonctionnent ArcGIS Pro et Python 3
Un point de décision clé sera de savoir si vous allez mettre à jour votre code Python pour qu’il fonctionne à la fois en 10.x et en. ArcGIS Pro, ou juste ArcGIS Pro. Si vous effectuez une conversion unidirectionnelle du code de Python 2 vers Python 3, il existe un 2to3 utilitaire de ligne de commande pouvant être utilisé pour automatiser une grande partie du processus. Cet utilitaire est disponible avec Python 2 et 3. Il est important de noter que 2to3, bien qu’il s’agisse d’un excellent outil, n’est pas une solution complète (elle est parfois estimée à 95%), et des modifications supplémentaires peuvent s’avérer nécessaires. Si vous avez besoin de supporter Python 2 et 3, voyez ci-dessous les stratégies pour supporter les deux versions.
N'oubliez pas que les scripts Python plus simples peuvent ne nécessiter aucune modification et peuvent s'exécuter correctement sans modification.
Les sections suivantes décrivent certaines des différences les plus courantes entre Python 2 et 3 que vous êtes susceptible de rencontrer. En outre, une excellente référence pour le portage sur Python 3 et les stratégies de migration se trouve dans Lennart Regebro. Portage vers Python 3 sur le site Web http://python3porting.com/. N'oubliez pas qu'il est possible d'écrire des scripts s'exécutant dans Python 2 et Python 3.
Réorganisation de la bibliothèque standard
Comme décrit dans Python PEP 3108, Python 3 inclut une réorganisation importante de la bibliothèque standard à partir de Python 2. La plupart de ces modifications impliquent des fonctionnalités qui ont été déplacées vers un autre emplacement ou font partie d'un module renommé. Pour écrire du code qui fonctionne à la fois en Python 2 et 3, vous pouvez gérer ces différences en utilisant des importations flexibles telles que les suivantes pour des modules tels que urllib2.
essayer:
importer urllib2 # Python 2
sauf ImportError:
importer urllib.request en tant que urllib2 # Python 3
déclaration et fonction d'impression
L’une des causes les plus courantes d’erreurs de syntaxe dans Python 2 est la conversion du impression déclaration à la impression une fonction. Heureusement, le impression Cette fonction a été rétroportée vers Python 2 et peut être utilisée en toute sécurité dans Python 2 et 3.
print ('Ceci imprimera en toute sécurité en Python 2 et 3')
# instructions print ne fonctionneront que dans Python 2
# print 'Les instructions d'impression ne seront imprimées qu'en toute sécurité en Python 2'
__futur__
En haut de vos scripts, importez le __futur__ flags pour soumettre votre code Python 2 à certaines des nouvelles règles de Python 3. Une fois que vos scripts ont été correctement analysés avec cette ligne, vous êtes sur la voie de la compatibilité avec Python 3.
depuis __future__ import print_function, unicode_literals, absolute_import
Dictionnaires
Utilisation dictionary.items () plutôt que dictionary.iteritems () le cas échéant. itéritems a été retiré de Python 3 et articles se comporte comme itéritems habitué. de même pour intervalle et Xrange: Xrange a été retiré de Python 3 et intervalle se comporte maintenant comme Xrange.
Chaînes et encodage
En Python 3, tout ce qui est entre guillemets est maintenant implicitement une chaîne Unicode. Le tableau d'octets prend la place de l'ancien str type. le unicode_literals import transformera implicitement tout ce qui est entre guillemets dans Python 2 en Unicode.
Python 3 est plus strict dans sa gestion du codage de caractères. Enregistrez explicitement vos scripts au format UTF-8, si ce n’est déjà fait. Ajouter une ligne de codage telle que # codage: utf-8 en haut de votre script afin que Python puisse identifier que le script est en UTF-8.
module io
Prendre en compte io module. Il a été introduit dans Python 2.6 et est inclus dans Python 3; il fournit un moyen propre de gérer de nombreuses tâches d'entrée et de sortie en tenant compte du codage de texte.
Commentaires
Laisser un commentaire