J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10

Le fait que mon script personnel s'exécute sur python2.7 était un problème, j'ai donc essayé d'utiliser python3. Le travail de cette année était sûr, et je l'ai fait, alors j'aimerais coder au cours de l'année.

Conditions préalables:

Couler

  1. Identifiez le script cible ――Je me demande s'il est acceptable d'utiliser uniquement les scripts que vous utilisez habituellement pour une vérification temporaire que vous ne pensez pas utiliser à l'avenir.
  2. Installez python3.6 sur Windows -DL et installez 3.6.0 à partir de Download Python | Python.org
  1. Modifier les paramètres pycharm --Créer un nouveau projet pour 3.6
  2. Installation du package requise
  1. Corrigez votre propre code
  1. Correction du chemin d'exécution

Quel type de traitement a été effectué et comment a-t-il été géré (python2.7.11 → py3.6.0)

Puisqu'il est "dans mon cas" jusqu'au dernier, ça change au cas par cas en fonction du style d'écriture et des fonctions utilisées, et ce n'est pas une histoire que j'en ai fait un bon style d'écriture comme python3 au niveau où ça a fonctionné sans problèmes.

Chaque fonction Avec ou sans changement de code Remarques
Lire le fichier ligne par ligne Changement a_file.xreadlines→a_file.Pour lire les lignes(Voir ci-dessous)
Référence du système de fichiers(ls -Comme R) Tel quel os.chemin et os.Utiliser listdir
Opération de chaîne de caractères japonais Changement La spécification de codage est supprimée(Voir ci-dessous)
Recevoir des arguments japonais Changement La spécification de codage est supprimée(Voir ci-dessous)
Sortie de chaîne Changement Mec célèbre(Voir ci-dessous)
Remplacement de la chaîne Changement La spécification de codage est supprimée(Voir ci-dessous)
Formatage de chaîne Tel quel +Utilisation de la concaténation de chaînes de caractères
Sortie de fichier texte Tel quel codec.utilisation ouverte
bottle(serveur Web) Tel quel Réinsérez la bouteille
Obtenir la taille de l'image avec PIL Tel quel J'ai remis l'oreiller dedans, mais c'est un peu gênant(Voir ci-dessous)
Obtenir la médiane avec numpy Tel quel J'ai réinséré numpy, mais c'est un peu gênant(Voir ci-dessous)
dormir à l'heure Tel quel
ionice avec psutil Tel quel réinsérer psutil
Obtenir l'heure actuelle Tel quel
Exécuter la commande système avec os Tel quel Cependant, si vous modifiez l'encodage en envoyant et en recevant des arguments, vous n'avez pas besoin de le spécifier
Affichage de la boîte de dialogue(GUI) Changement Utilisez MessageBoxA de win32api de ctypes(Voir ci-dessous)

Détails des modifications telles que la correction du code

déclaration d'impression

Celui que vous voyez souvent.

# before
print "hoge"

#after
print("hoge")

Codage de code de caractère

Je n'ai plus besoin de sorts mystérieux.

# before
import sys
reload(sys)
sys.setdefaultencoding("cp932")

unicode(hoge_string, encoding='cp932')

#after
#Je n'ai plus besoin de sorts!Cependant, si vous l'écrivez, la manière d'écrire les deux premières lignes changera
import importlib
importlib.reload(sys)
sys.setdefaultencoding('cp932')

#Vous n'avez même pas besoin de spécifier chaque variable de chaîne
hoge_string

Affichage de la boîte de message lors de l'utilisation de win32api

Utilisez MessageBoxW au lieu de MessageBoxA. Référence: Appel MessageBox (API Windows) à partir de Python 3

# before
def win_alert(mes):
    user32 = windll.user32
    user32.MessageBoxA(
        0,
        mes,
        "info",
        0x00000040)

#after
def win_alert(mes):
    user32 = windll.user32
    user32.MessageBoxW(
        0,
        mes,
        "info",
        0x00000040)

xreadlines Je n'ai pas pu trouver la documentation officielle, mais xreadlines semble être obsolète dans python3. Cependant, comme il y a des readlines, j'ai pris x.

# before
for line in itr.xreadlines():

#after
for line in itr.readlines():

Référence: [Portage du code vers Python 3 à l'aide de 2to3 --Dive Into Python 3 version japonaise](http://diveintopython3-ja.rdy.jp/porting-code-to-python-3-with-2to3. html)

installation d'oreillers

Quand je fais "pip install oreiller" sur les fenêtres, la compilation s'exécute au moment de l'installation et je me fâche contre zlib. Quoi qu'il en soit, j'ai un binaire pré-construit et je l'ai installé.

#Ouvrez ce qui suit dans votre navigateur"Pillow‑3.4.2‑cp36‑cp36m‑win_amd64.whl"DL
#   http://www.lfd.uci.edu/~gohlke/pythonlibs/
$ pip install Pillow‑3.4.2‑cp36‑cp36m‑win_amd64.whl

Référence: [Impossible d'installer Pillow pour Python 3.x sous Windows --Zlib est requis --Stack Overflow](http://stackoverflow.com/questions/38733647/cant-install-pillow-for-python-3-x- in-windows-zlib-is-required) Référence: erreur python --Zlib lors de l'installation de Pillow --Stack Overflow Référence: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow

Installez numpy

En fonction de l'erreur au moment de l'installation, j'ai installé "Visual C ++ Build Tools" et l'ai ré-exécuté.

Référence: Téléchargez les outils de construction Visual C ++ (compilateur C ++ autonome, bibliothèques et outils)

(Bonus) Démarrez la bouteille python3 à partir du planificateur de tâches Windows mais masquez la console

Même lors de l'utilisation de python2, le serveur Web de bouteille a été automatiquement démarré sans afficher la console. Mais d'une manière ou d'une autre, pythonw.exe ne démarre pas le script de la bouteille ... Bien sûr, lorsque vous le démarrez avec python.exe, la console s'affiche ... (J'ai oublié de faire une sauvegarde des paramètres du planificateur de tâches et comment cela a été réalisé ...)

Ainsi, après une recherche rapide, si vous sélectionnez "Exécuter, que l'utilisateur soit connecté ou non" dans le planificateur de tâches, il ne sera pas affiché. J'ai pu le faire, mais pourquoi pas? タスクスケジューラ.png

#Paramètres du planificateur de tâches
[Général]→[Options de sécurité]
"Exécuter indépendamment du fait que l'utilisateur soit connecté ou non"

[opération]→[programme/scénario]
"C:\hoge\Python36\python.exe"

[opération]→[Ajouter un argument]
C:/hoge/bottle_sample.py


Remarque: [Le fichier de commandes exécuté à partir du planificateur de tâches dans Windows 7 n'apparaît pas à l'écran. --Microsoft Community](https://answers.microsoft.com/en-us/windows/forum/windows_7-winapps/windows7%E3%81%A7%E3%82%BF%E3%82%B9%E3%82 % AF / ccff2c2f-5a0e-4f3d-ae81-9dff3e36fc3c)

en conclusion

Peut-être parce que la cible était de petites fonctions simples, j'ai pu le faire en une heure ou deux lors de l'enquête, donc c'était relativement facile à déplacer. Cependant, je ne sais pas comment l'écrire correctement en python3, donc je dois l'étudier correctement ...

Surtout pour ceux qui ont du mal en japonais sous windows, il est indispensable de passer à python3. (Vous n'avez plus besoin d'utiliser cp932 ou de code de caractère mystérieux, ni de vous soucier de la correspondance de cohérence entre l'encodage, le décodage et l'unicode ())

La plupart des bibliothèques sont déjà compatibles. (Si cela le rend n fois plus rapide comme ruby ou php, ça va être du charabia)

c'est tout.

Recommended Posts

J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
[IBM Cloud] J'ai essayé d'accéder à la table Db2 on Cloud à partir de Cloud Funtions (python)
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'ai exécuté python sur Windows
J'ai essayé de représenter graphiquement les packages installés en Python
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
J'ai essayé Python sur Mac pour la première fois.
J'ai essayé de détecter l'iris à partir de l'image de la caméra
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé python pour la première fois avec heroku
Je voulais utiliser la bibliothèque Python de MATLAB
[Python] J'ai essayé de représenter graphiquement le top 10 des ombres à paupières
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résumer les opérations de chaîne de Python
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
J'ai essayé de trouver l'entropie de l'image avec python
J'ai remplacé le livre de recettes Windows PowerShell par un script python.
J'ai essayé de simuler la propagation de l'infection avec Python
Python 3.6 sous Windows ... et vers Xamarin.
J'ai essayé de créer une API list.csv avec Python à partir de swagger.yaml
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
J'ai essayé de toucher Python (installation)
J'ai essayé d'exécuter PIFuHD sur Windows pour le moment
J'ai essayé de reconnaître le visage de la vidéo (OpenCV: version python)
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Comment passer des arguments lors de l'appel d'un script python depuis Blender sur la ligne de commande
J'ai essayé d'énumérer les différences entre java et python
J'ai essayé de lancer le cluster ipython au minimum sur AWS
J'ai essayé d'obtenir diverses informations de l'API codeforces
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
Mettre à jour Mac Python de 2 à 3
J'ai essayé de résumer les langues que les débutants devraient désormais apprendre par but
J'ai essayé de prédire le genre de musique à partir du titre de la chanson sur le réseau neuronal récurrent
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé d'afficher le temps de lecture de la vidéo (OpenCV: version Python)
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
Tout, de la création d'un environnement Python à son exécution sous Windows
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé de résumer la commande umask
J'ai essayé d'implémenter la permutation en Python
[Kivy] Comment installer Kivy sur Windows [Python]
J'ai essayé d'implémenter PLSA dans Python 2
Entrée standard Python3 que j'ai essayé de résumer
Je veux utiliser jar de python
Connexion de python à MySQL sur CentOS 6.4
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé de toucher l'API COTOHA