web-dev-qa-db-fra.com

Puis-je en quelque sorte "compiler" un script python pour travailler sur PC sans Python installé?)

J'ai donc un script Python:

myscript.py

Je l'exécute comme ceci:

python D:\myscript.py

Cependant, je dois avoir Python installé et inclus dans la variable d'environnement PATH pour que cela fonctionne.

Est-il possible de "regrouper" Python exécutable avec un script Python afin que d'autres personnes puissent l'exécuter sur leur PC sans Python?)

C'est correct si cela ne fonctionne que sous Windows.

ÉDITER:

Après avoir essayé le compile.py J'obtiens cette erreur:

Traceback (most recent call last):
  File "D:\stuff\compile.py", line 4, in <module>
    import py2exe
ImportError: No module named py2exe
27
Richard Knop

Voici une façon de le faire (pour Windows, en utilisant py2exe).

Tout d'abord, installez py2exe sur votre Windows box.

Créez ensuite un script python nommé compile.py, comme ça:

import sys
from distutils.core import setup
import py2exe

entry_point = sys.argv[1]
sys.argv.pop()
sys.argv.append('py2exe')
sys.argv.append('-q')

opts = {
    'py2exe': {
        'compressed': 1,
        'optimize': 2,
        'bundle_files': 1
    }
}

setup(console=[entry_point], options=opts, zipfile=None)

Pour compiler votre script Python dans un exécutable Windows, exécutez ce script avec votre programme comme argument:

$ python compile.py myscript.py

Il crachera un exécutable binaire (EXE) avec un interpréteur Python compilé à l'intérieur. Vous pouvez alors simplement distribuer ce fichier exécutable.

24
Corey Goldberg

PyInstaller a bien fonctionné pour moi, générant des paquets raisonnablement petits en raison de son utilisation d'upx. Sa détection des dépendances était également meilleure que py2exe à l'époque. Il ne semble pas avoir beaucoup de développement récent et ne fonctionne probablement pas avec 3.x, cependant.

La source dans le référentiel est un meilleur point de départ que le package 1.4.

Consultez également la page wiki sur l'utilisation de Python 2.6+.

Dans la liste des fonctionnalités:

  • Empaquetage des programmes Python dans des exécutables standard, qui fonctionnent sur des ordinateurs sans Python installé).
  • Multiplateforme: fonctionne sous Windows (32 bits et 64 bits), Linux (32 bits et 64 bits) et Mac OS X (32 bits uniquement pour le moment, voir MacOsCompatibility).
  • Multiversion: fonctionne sous n'importe quelle version de Python de 1.5 à 2.7. REMARQUE: si vous utilisez Python 2.6+ sous Windows, voir Python26Win.
  • Mode d'emballage flexible:
  • Répertoire unique: créez un répertoire contenant un exécutable plus tous les modules binaires externes (.dll, .pyd, .so) utilisés par le programme.
  • Fichier unique: créez un fichier exécutable unique, totalement autonome, qui s'exécute sans aucune dépendance externe.
  • Personnalisé: vous pouvez automatiser PyInstaller pour faire le mode de conditionnement souhaité à l'aide d'un simple fichier de script en Python.
  • Prise en charge intelligente explicite de nombreux 3e packages (pour les importations cachées, les fichiers de données externes, etc.), pour les faire fonctionner avec PyInstaller prêt à l'emploi (voir SupportedPackages).
  • Prise en charge complète d'un seul fichier Egg: les fichiers .Egg requis sont automatiquement inspectés pour les dépendances et regroupés, et toutes les fonctionnalités spécifiques à Egg sont également prises en charge lors de l'exécution (points d'entrée, etc.).
  • Prise en charge partielle des répertoires Egg: les répertoires .Egg requis sont automatiquement inspectés pour les dépendances et regroupés, mais les fonctionnalités spécifiques à Egg ne fonctionneront pas lors de l'exécution.
  • Prise en charge automatique des bibliothèques binaires utilisées via ctypes (voir CtypesDependencySupport pour plus de détails).
  • Prise en charge de l'emballage binaire automatique via le compresseur UPX bien connu.
  • Mode console en option (voir sortie standard et erreur standard lors de l'exécution).
  • Fonctionnalités spécifiques à Windows:
  • Prise en charge des exécutables de signature de code.
  • Prise en charge entièrement automatique des CRT: pas besoin de distribuer manuellement MSVCR * .DLL, de redistribuer les installateurs, les manifestes ou toute autre chose; de véritables applications à un fichier qui fonctionnent partout!
  • Icône exécutable sélectionnable.
  • Section de ressources de version entièrement configurable et se manifeste en exécutable.
  • Prise en charge de la création de serveurs COM.
  • Fonctionnalités spécifiques à Mac:
  • Prise en charge préliminaire des bundles (voir Compatibilité MacOs)
11
Binary Phile

Vous voulez quelque chose comme py2exe .

10
unode

Il existe plusieurs solutions comme py2exe , cx-freeze ou (uniquement pour Mac OS X) py2app .

9
Michael

Ici est une liste d'entre eux.

5
ʇsәɹoɈ