Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern

Es war ein Problem, dass mein Home-Skript auf Python2.7 ausgeführt wurde, daher habe ich versucht, Python3 zu verwenden. Die diesjährige Arbeit war sicher und ich habe sie erledigt, also möchte ich über das Jahr hinweg programmieren.

Voraussetzungen:

Fließen

  1. Identifizieren Sie das Zielskript ――Ich frage mich, ob es in Ordnung ist, nur die Skripte zu verwenden, die Sie normalerweise für die vorübergehende Überprüfung verwenden, von denen Sie nicht glauben, dass Sie sie in Zukunft verwenden werden.
  2. Installieren Sie python3.6 unter Windows -DL und installieren Sie 3.6.0 von Download Python | Python.org --Checked Add PATH im Installationsassistenten
  1. Ändern Sie die Pycharmeinstellungen --Erstellen Sie ein neues Projekt für 3.6
  2. Erforderliche Paketinstallation
  1. Korrigieren Sie Ihren eigenen Code --Fixieren und testen Sie den Fehlerteil, indem Sie das erforderliche Skript aus dem alten Projekt für py2 verschieben
  1. Korrektur des Ausführungspfads

Welche Art von Verarbeitung wurde durchgeführt und wie wurde damit umgegangen (python2.7.11 → py3.6.0)

Da es "in meinem Fall" bis zum letzten ist, ändert es sich von Fall zu Fall, abhängig vom Schreibstil und den verwendeten Funktionen, und es ist keine Geschichte, dass ich es als Python3 zu einem guten Schreibstil gemacht habe, auf der Ebene, auf der es ohne Probleme funktioniert hat.

Jede Funktion Mit oder ohne Codeänderung Bemerkungen
Datei zeilenweise lesen Veränderung a_file.xreadlines→a_file.Zeilen lesen(Siehe unten)
Dateisystemreferenz(ls -R-ähnlich) Wie es ist os.Pfad und OS.Verwenden Sie listdir
Japanische Zeichenkettenoperation Veränderung Die Codierungsspezifikation wird gelöscht(Siehe unten)
Erhalten Sie japanische Argumente Veränderung Die Codierungsspezifikation wird gelöscht(Siehe unten)
String-Ausgabe Veränderung Berühmter Typ(Siehe unten)
String-Ersatz Veränderung Die Codierungsspezifikation wird gelöscht(Siehe unten)
String-Formatierung Wie es ist +Verwendung der Verkettung von Zeichenfolgen
Textdateiausgabe Wie es ist codec.offene Verwendung
bottle(Webserver) Wie es ist Setzen Sie die Flasche wieder ein
Holen Sie sich die Bildgröße mit PIL Wie es ist Ich habe das Kissen wieder hineingelegt, aber es ist etwas mühsam(Siehe unten)
Holen Sie sich Median mit Numpy Wie es ist Ich habe numpy wieder eingefügt, aber es ist ein wenig mühsam(Siehe unten)
Schlaf zur Zeit Wie es ist
Ionice mit Psutil Wie es ist Psutil wieder einsetzen
Aktuelle Zeit abrufen Wie es ist
Führen Sie den Systembefehl mit os aus Wie es ist Wenn Sie die Codierung jedoch durch Senden und Empfangen von Argumenten ändern, müssen Sie sie nicht angeben
Dialoganzeige(GUI) Veränderung Verwenden Sie MessageBoxA von win32api von ctypes(Siehe unten)

Details zu Änderungen wie Codekorrektur

Anweisung drucken

Die, die du oft siehst.

# before
print "hoge"

#after
print("hoge")

Zeichencode-Codierung

Ich brauche keine mysteriösen Zauber mehr.

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

unicode(hoge_string, encoding='cp932')

#after
#Ich brauche keine Zauber mehr!Wenn Sie es jedoch schreiben, ändert sich die Art und Weise, wie die ersten beiden Zeilen geschrieben werden
import importlib
importlib.reload(sys)
sys.setdefaultencoding('cp932')

#Sie müssen nicht einmal jede Zeichenfolgenvariable angeben
hoge_string

Meldungsfeldanzeige bei Verwendung von win32api

Verwenden Sie MessageBoxW anstelle von MessageBoxA. Referenz: MessageBox (Windows-API) von Python 3 aus aufrufen

# 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 Ich konnte die offizielle Dokumentation nicht finden, aber xreadlines scheint in Python3 veraltet zu sein. Da es jedoch Readlines gibt, habe ich x genommen.

# before
for line in itr.xreadlines():

#after
for line in itr.readlines():

Referenz: [Portieren von Code nach Python 3 mit 2to3 - Tauchen Sie in die japanische Version von Python 3 ein](http://diveintopython3-ja.rdy.jp/porting-code-to-python-3-with-2to3. html)

Kisseninstallation

Wenn ich "Pip Install Pillow" an den Fenstern mache, wird der Build zum Zeitpunkt der Installation ausgeführt und ich werde wütend auf zlib. Wie auch immer, ich habe eine vorgefertigte Binärdatei bekommen und sie installiert.

#Öffnen Sie Folgendes in Ihrem Browser"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

Referenz: [Pillow für Python 3.x kann unter Windows nicht installiert werden - Zlib ist erforderlich - Stapelüberlauf](http://stackoverflow.com/questions/38733647/cant-install-pillow-for-python-3-x- in-windows-zlib-ist-erforderlich) Referenz: Python - Zlib-Fehler bei der Installation von Pillow - Stack Overflow Referenz: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow

Installieren Sie numpy

Entsprechend dem Fehler zum Zeitpunkt der Installation habe ich "Visual C ++ Build Tools" installiert und dann erneut ausgeführt.

Referenz: Laden Sie die Visual C ++ - Build-Tools herunter (eigenständiger C ++ - Compiler, Bibliotheken und Tools)

(Bonus) Starten Sie die Python3-Flasche über den Windows-Taskplaner, verstecken Sie jedoch die Konsole

Selbst bei Verwendung von python2 wurde der Flaschenwebserver automatisch gestartet, ohne dass die Konsole angezeigt wurde. Aber irgendwie startet pythonw.exe das Flaschenskript nicht ... Wenn Sie es mit python.exe starten, wird es natürlich auf der Konsole angezeigt ... (Ich habe vergessen, eine Sicherungskopie der Einstellungen des Taskplaners zu erstellen und wie diese realisiert wurde ...)

Wenn Sie dann nach einer Schnellsuche im Taskplaner "Ausführen, unabhängig davon, ob der Benutzer angemeldet ist" auswählen, wird diese nicht angezeigt. Ich konnte es schaffen, aber warum nicht? タスクスケジューラ.png

#Einstellungen im Taskplaner
[Allgemeines]→[Sicherheitsoptionen]
"Unabhängig davon ausführen, ob der Benutzer angemeldet ist"

[Operation]→[Programm/Skript]
"C:\hoge\Python36\python.exe"

[Operation]→[Argument hinzufügen]
C:/hoge/bottle_sample.py


Hinweis: [Die vom Taskplaner in Windows 7 ausgeführte Batchdatei wird nicht auf dem Bildschirm angezeigt. --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)

abschließend

Vielleicht, weil das Ziel kleine und einfache Funktionen waren, konnte ich es in ein oder zwei Stunden während der Untersuchung erledigen, so dass es relativ leicht zu bewegen war. Ich bin mir jedoch nicht bewusst, wie ich es als Python3 richtig schreiben soll, also muss ich es richtig studieren ...

Insbesondere für diejenigen, die unter Windows Schwierigkeiten mit Japanisch haben, ist ein Upgrade auf Python3 unerlässlich. (Sie müssen weder cp932 noch mysteriösen Zeichencode mehr verwenden oder sich um die Konsistenzübereinstimmung zwischen Codierung, Decodierung und Unicode () sorgen.)

Die meisten Bibliotheken sind bereits kompatibel. (Wenn es dadurch n-mal schneller wird als Ruby oder PHP, wird es Kauderwelsch sein)

das ist alles.

Recommended Posts

Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
[IBM Cloud] Ich habe versucht, über Cloud Funtions (Python) auf die Tabelle Db2 on Cloud zuzugreifen.
Ich habe es mit den Top 100 PyPI-Paketen versucht.> Ich habe versucht, die auf Python installierten Pakete grafisch darzustellen
Ich habe Python unter Windows ausgeführt
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Ich wollte die Python-Bibliothek von MATLAB verwenden
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe das Windows PowerShell-Kochbuch durch ein Python-Skript ersetzt.
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Python 3.6 unter Windows ... und zu Xamarin.
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe versucht, Python zu berühren (Installation)
Ich habe vorerst versucht, PIFuHD unter Windows auszuführen
Ich habe versucht, das Gesicht aus dem Video zu erkennen (OpenCV: Python-Version)
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Aktualisieren Sie Mac Python von 2 auf 3
Ich habe versucht, die Sprachen, die Anfänger von nun an lernen sollten, absichtlich zusammenzufassen
Ich habe versucht, das Musikgenre anhand des Songtitels im Recurrent Neural Network vorherzusagen
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
Ich habe versucht, die Videowiedergabezeit anzuzeigen (OpenCV: Python-Version)
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 2)
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Alles vom Erstellen einer Python-Umgebung bis zur Ausführung unter Windows
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, Permutation in Python zu implementieren
[Kivy] So installieren Sie Kivy unter Windows [Python]
Ich habe versucht, PLSA in Python 2 zu implementieren
Python3-Standardeingabe habe ich versucht zusammenzufassen
Ich möchte ein Glas aus Python verwenden
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren