Schreiben Sie, wie Sie eine Wrapper-Datei in einer Windows-Umgebung erstellen. Normalerweise sollte dies bei der Ausführung über eine Eingabeaufforderung oder dergleichen erfolgen. (Angenommen, der Pfad des Verzeichnisses mit python.exe ist vorhanden.)
C:\Users\testuser> python C:\Users\testUser\pyruntest.py
→pyruntest.py Ausführungsergebnis wird ausgegeben
Wenn Sie jedoch keine python.exe mit Ihrer .py-Datei verknüpft haben, können Sie dies nicht tun.
C:\Users\testuser> pyruntest.py
→ Fehler
@echo off
%PYTHONPATH%\python.exe %~dp0\%~n0.py %*
Zum Beispiel, wenn Sie das Obige unter dem Dateinamen pyruntest.bat speichern Sie können pyruntest.py wie folgt im selben Verzeichnis wie pyruntest.bat ausführen:
C:> pyruntest.bat
→pyruntest.py Ausführungsergebnis wird ausgegeben
Sie können von überall aus gehen, wenn Sie durch den Pfad gehen Wenn Sie .bat nicht eingeben möchten, ändern Sie die Erweiterung in .cmd.
C:> pyruntest
→pyruntest.py Ausführungsergebnis wird ausgegeben
Normalerweise gibt es kein Problem mit Methode 1, aber um mehrere Dateien zu verarbeiten, möchten Sie diese als Argumente verarbeiten Wenn ich es per Drag & Drop auf .cmd ziehe, wird dieser Fehler angezeigt.
Für den Befehl wurden zu viele Befehlszeilenargumente angegeben. Geben Sie den richtigen Wert an und versuchen Sie es erneut.
Die Ursache ist die Beschränkung von cmd.exe? 2047 Zeichen oder 8191 Zeichen (WinXP oder höher) scheint das Maximum zu sein. Powershell hat dieses Limit nicht, aber es ist eine heikle Art, .ps1 mit einem Doppelklick auszuführen. .. Was für ein schlechtes Terminal, ich wünschte, Powershell, eine Eingabeaufforderung, würde von der Welt verschwinden. Es sollte möglich sein, es zu lösen, wenn es in exe konvertiert wird.
Möglicherweise besteht die einzige Möglichkeit, es in einem solchen Fall zu verwenden, darin, das exe-Ausführungsformat zu verwenden. Es gibt verschiedene Möglichkeiten, es zu einer Exe zu machen.
Immerhin dachte ich, ich würde es mit Javascript schaffen, aber ich war frustriert und entschied mich, es mit C # zu schaffen.
pyruntest.cs Ich bin ein C # -Einsteiger und es gibt viele Dinge, die ich nicht verstehe, aber ich bin umgezogen, also werde ich es aufdecken.
using System;
using System.Diagnostics;
using System.ComponentModel;
class Program
{
static void Main(string[] args)
{
// Python Program Path
var pythonScriptPath = System.Reflection.Assembly.GetExecutingAssembly().Location.Replace(".exe", "") + ".py";
try
{
var startInfo = new ProcessStartInfo()
{
FileName = @"python.exe",
UseShellExecute = false,
Arguments = "\"" + pythonScriptPath + "\" \"" + string.Join("\" \"", args),
};
using (var process = Process.Start(startInfo))
{
process.WaitForExit();
}
}
catch (Win32Exception)
{
Console.WriteLine("python.Die Exe wurde nicht gefunden. Zur Umgebungsvariablen PATH hinzufügen");
}
}
}
Beim Kompilieren mit csc.exe wird pyruntest.exe erstellt
C:\Users\testuser> C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe pyruntest.cs
C:\Users\testuser> pyruntest.exe
→pyruntest.py Ausführungsergebnis wird ausgegeben
C:\Users\testuser> pyruntest
→ Natürlich ist das immer noch am pyruntesten.py Ausführungsergebnis wird ausgegeben
Wenn Sie es ordnungsgemäß über den Pfad der Umgebungsvariablen angeben, kann es unabhängig vom aktuellen Verzeichnis ausgeführt werden
C:\Users\testuser> set PATH=%PATH%;%CD%
C:\Users\testuser> setx PATH %PATH%
C:\Users\testuser> cd \
C:> pyruntest
→pyruntest.py Ausführungsergebnis wird ausgegeben
Methode 1 und Methode 2 haben einen gemeinsamen Mechanismus: Allgemeine Spezifikationen für die obige Ausführungsmethode: Platzieren Sie [. Ich möchte ausführen] .bat oder [Ich möchte ausführen] .cmd oder [Ich möchte ausführen] .exe im selben Verzeichnis wie [Ich möchte ausführen] .py. (Jetzt müssen Sie die Wrapper-Quelle nicht jedes Mal ändern.)
Nebenbei) Der Grund, warum ich das mache, ist, dass wenn es ein Heim-PC ist, es vorbei ist, wenn Sie die Zuordnung festlegen. In einer Thin Client-Umgebung für die Arbeit konnte ich die Einstellungen nicht ohne Berechtigung ändern Sie benötigen eine solche Kreisverkehrsverpackung. Es ist eine unbequeme Welt geworden.
Recommended Posts