[PYTHON] Différentes façons d'exécuter des fichiers .py sous Windows

Comment exécuter un fichier .py normal

Écrivez comment créer un fichier wrapper dans un environnement Windows. Normalement, cela devrait être fait lors de l'exécution à partir d'une invite de commande ou autre. (En supposant que le PATH du répertoire contenant python.exe est en place)

C:\Users\testuser> python C:\Users\testUser\pyruntest.py
→pyruntest.le résultat de l'exécution py est sorti

Mais si vous n'avez pas associé python.exe à votre fichier .py, vous ne pouvez pas le faire.

C:\Users\testuser> pyruntest.py
→ Erreur

1.Faites un wrapper avec un fichier bat ou un fichier cmd

@echo off
%PYTHONPATH%\python.exe %~dp0\%~n0.py %*

Par exemple, si vous enregistrez ce qui précède avec le nom de fichier pyruntest.bat Vous pouvez exécuter pyruntest.py dans le même répertoire que pyruntest.bat comme suit:

C:> pyruntest.bat
→pyruntest.le résultat de l'exécution py est sorti

Vous pouvez aller de n'importe où si vous passez par Path Si vous ne souhaitez pas taper .bat, remplacez l'extension par .cmd.

C:> pyruntest
→pyruntest.le résultat de l'exécution py est sorti

2. Créez un exe en C #.

Il n'y a généralement pas de problème avec la méthode 1, mais pour traiter plusieurs fichiers que vous souhaitez traiter comme arguments Lorsque je le glisse et le dépose sur .cmd, j'obtiens cette erreur.

Trop d'arguments de ligne de commande ont été spécifiés pour la commande. Spécifiez la valeur correcte et réessayez.

La cause est la limitation de cmd.exe? 2047 caractères ou 8191 caractères (WinXP ou version ultérieure) semble être le maximum. Powershell n'a pas cette limite, mais c'est encore plus épineux d'exécuter .ps1 avec un double clic. .. Quel pauvre terminal, je souhaite que Powershell, une invite de commande, disparaisse du monde. Il devrait être possible de le résoudre s'il est converti en exe.

La seule façon de l'utiliser dans un tel cas est peut-être d'utiliser le format d'exécution exe. Il existe plusieurs façons d'en faire un exe,

Après tout, je pensais le faire avec Javascript, mais j'étais frustré et j'ai décidé de le faire avec C #.

pyruntest.cs Je suis un débutant en C # et il y a beaucoup de choses que je ne comprends pas, mais j'ai déménagé donc je vais l'exposer.

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.L'exe n'a pas été trouvé. Ajouter à la variable d'environnement PATH");
    	}

    }
}

La compilation avec csc.exe produit pyruntest.exe

C:\Users\testuser> C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe pyruntest.cs
C:\Users\testuser> pyruntest.exe
→pyruntest.le résultat de l'exécution py est sorti
C:\Users\testuser> pyruntest
→ Bien sûr, c'est toujours pyruntest.le résultat de l'exécution py est sorti

Si vous le donnez correctement via le chemin de la variable d'environnement, il peut être exécuté quel que soit le répertoire courant

C:\Users\testuser> set PATH=%PATH%;%CD%
C:\Users\testuser> setx PATH %PATH%
C:\Users\testuser> cd \
C:> pyruntest
→pyruntest.le résultat de l'exécution py est sorti

La méthode 1 et la méthode 2 ont un mécanisme commun, Spécifications communes pour la méthode d'exécution ci-dessus: Placez [Je veux exécuter] .bat ou [Je veux exécuter] .cmd ou [Je veux exécuter] .exe dans le même répertoire que [Je veux exécuter] .py. (Désormais, vous n'avez pas à modifier la source du wrapper à chaque fois)

A part) La raison pour laquelle je fais cela est que s'il s'agit d'un PC personnel, c'est fini si vous définissez l'association. Dans un environnement de client léger pour le travail, je ne pouvais pas modifier les paramètres sans autorisation, donc Vous aurez besoin d'un tel emballage de rond-point. C'est devenu un monde incommode.

Recommended Posts

Différentes façons d'exécuter des fichiers .py sous Windows
Python 3.6 sous Windows ... et vers Xamarin.
Comment utiliser Dataiku sous Windows
Comment installer pycrypto sur Windows
Comment déployer django-compresseur sous Windows
Importer des fichiers de Windows vers WSL
Comment installer Music 21 sur Windows
[Kivy] Comment installer Kivy sur Windows [Python]
Comment utiliser l'Assistant Google sur Windows 10
Comment installer Richzhang / Colorisation sur Windows 10
Différentes façons de créer un dictionnaire (mémoires)
Comment trouver des fichiers volumineux sous Linux
Différentes façons de détruire des ressources avec une portée
[Python] Compréhension de liste Différentes façons de créer une liste
[Jupyter Notebook / Lab] Trois méthodes de débogage sur Jupyter [Pdb]
Mettez MicroPython sur Windows pour exécuter ESP32 sur Python
Comment installer rapidement h5py sur Windows 10 [non officiel]
Comment vivre une vie décente avec Windows 2017
Je veux faire pyenv + pipenv même sous Windows
[Python] Comment installer OpenCV sur Anaconda [Windows]
[Windows] Mémo pour l'utilisation de Keras sur GPU [Tensorflow-GPU]
Comment installer / vérifier Graphviz sur anaconda / windows10
Étapes pour créer PyTorch 1.5 pour CUDA 10.2 sous Windows
Python sur Windows
Convertir le fichier .ipynb du notebook jupyter en fichier .py exécutable python
Diverses méthodes pour extraire les colonnes du tableau NumPy
Comment intégrer mod_wsgi dans Apache sur Windows Python
Essayez de le résoudre de différentes manières (SAT, CSP)
Comment exécuter Django sur IIS sur un serveur Windows
2 façons de lire tous les fichiers csv dans un dossier
Remarques sur la façon d'utiliser Firefox avec du sélénium sous Windows