2017-04-21 3 views
0

nicht starten Ich musste Python 3.6.1 x64 für ein Projekt unter Windows installieren. Ich habe 3.6.1 x86 deinstalliert und 3.6.1 x64 installiert. Ich stellte sicher, dass mein PATH env var auf die neue Installation zeigt. Ich habe dann dazugehörige py-Dateien mit dem richtigen python.exe: C: \ Programme \ Python36 \ python.exe statt: C: \ Program Files (x86) \ Python36-32 \ python.exeNach Python x64 Installation unter Windows kann Skript aus Explorer

I kann ein Skript direkt von einem Cmd-Fenster durch Aufruf von Python kein Problem ausführen: python meinskript.py

aber wenn ich doppelklicke es zeigt einen Cmd Windows Bot nichts darin.

Wenn ich "Öffnen mit" es wird nicht geladen, nur geben Sie mir den wartenden Cursor für ein paar Sekunden. Auch nachdem ich nach der neuen python.exe gesucht habe

Was fehlt mir hier?

Alles funktionierte gut für Python x86

Dank!

+0

Stellen Sie im Dialogfeld "Standardprogramme" der Systemsteuerung, um Dateizuordnungen festzulegen, sicher, dass .py-Dateien mit "Python" von der Python Software Foundation mit der Beschreibung "Python-Datei" verknüpft sind. Das Symbol sollte das Python-Logo haben, möglicherweise mit einer Rakete, wenn Sie den py-Launcher installiert haben. – eryksun

+0

Yup es ist mit dem Launcher (Python-Symbol mit Rakete) verbunden. Ich habe gerade eine vollständige Deinstallation von 3.6.1 x64, manuell alle Python-Installationsordner gelöscht und x64 neu installiert. Ich bekomme das Gleiche. Es sieht aus wie ein Problem mit dem Launcher (py.exe) nicht Python – Geordie

Antwort

1

Le Seufzer, zwei Probleme passiert. Irgendetwas wurde mit der Python-Installation irgendwo geborst, eine vollständige Deinstallation und Neuinstallation von 3.6.1 x64 reparierte das für die allgemeine Python-Ausführung.

Zweitens benutze ich Pywinauto, weshalb ich x64 für den Zugriff auf die Benutzeroberfläche der x64-App brauche. Anscheinend braucht es auch erhöhte Benutzerrechte, dh Admin. Wenn ich also auf ein Skript doppelklicke, bleibt es einfach ohne Feedback, Fehler usw. hängen, da der Launcher nicht mit Administratorrechten ausgeführt wird.

Ich habe dies nicht abfangen, weil ich Python immer manuell aus einem erhöhten cmd-Fenster ausführte. Wenn ich einen Weg finde, den Launcher immer als Admin auszuführen, werde ich hier updaten.

UPDATE: Hier ist eine tiefer gehende Thread auf Python immer Ausführungsrechte auf Windows zu erhöhen: How to run python script with elevated privilege on windows

Es war viel einfacher für mich ein Powershell-Skript zu schreiben, um diesen Job zu tun:

# ========================================= Admin Rights ======================================================= 
function asAdmin 
{ 
    [string]$cmdPath = $args[0] 
    if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$cmdPath`"" -Verb RunAs; exit } 
} 

asAdmin $PSCommandPath 

Start-Process "pythonw" "$PSScriptRoot\myPythonScriptWithUI.pyw" 
+1

Meinen Sie wollen Sie ein bestimmtes Skript ausgeführt werden, erhöhte, oder, dass Sie immer py.exe auf erhöhte ausgeführt werden soll? Letzteres ist möglich, indem das Ausführen als Administrator in den Kompatibilitätseigenschaften von py.exe erzwungen wird. Unter der Haube wird dies in 'HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers' als Wert mit dem vollständigen Pfad zur ausführbaren Datei und den Daten' ~ RUNASADMIN' gesetzt. – eryksun

+1

Wenn es ersteres ist, kann das Skript 'ShellExecuteEx' selbst mit dem Verb" runas ". Verwenden Sie die "Ex" -Version anstelle von "ShellExecute", um ein Prozess-Handle zu erhalten. Rufen Sie dann 'WaitForSingleObject' auf, um zu warten, bis die erhöhte Instanz beendet wird, und' GetExitCodeProcess', um den Exit-Code als Ihren eigenen zu übernehmen. Sie können diese Funktionen über PyWin32 oder ctypes oder ein benutzerdefiniertes Erweiterungsmodul aufrufen. – eryksun

+0

Nur bestimmte Skripte.Yup Ich sah einen Thread hier über Python-Skript, um sich selbst als Admin ausführen, aber für mich ist es viel einfacher, nur ein Startprogramm Powershell-Skript, das das gleiche tut dann startet Python. – Geordie

Verwandte Themen