Hoe maak ik een python-script uitvoerbaar?

Hoe kan ik een python-script uitvoeren met mijn eigen opdrachtregelnaam zoals ‘myscript’ zonder dat ik ‘python myscript.py’ in de terminal hoef te doen?


Antwoord 1, autoriteit 100%

  1. Voeg een shebang-regel toe aan de bovenkant van het script:

    #!/usr/bin/env python

  2. Markeer het script als uitvoerbaar:

    chmod +x myscript.py

  3. Voeg de dir die het bevat toe aan je PATHvariabele. (Als je wilt dat het blijft plakken, moet je dit doen in .bashrcof .bash_profilein je thuismap.)

    export PATH=/path/to/script:$PATH


Antwoord 2, autoriteit 60%

De beste manier, die platformonafhankelijk is, is om setup.pyaan te maken, er een toegangspunt in te definiëren en te installeren met pip.

Stel dat je de volgende inhoud van myscript.pyhebt:

def run():
    print('Hello world')

Vervolgens voeg je setup.pytoe met het volgende:

from setuptools import setup
setup(
    name='myscript',
    version='0.0.1',
    entry_points={
        'console_scripts': [
            'myscript=myscript:run'
        ]
    }
)

Invoerpuntformaat is terminal_command_name=python_script_name:main_method_name

Installeer ten slotte met het volgende commando.

pip install -e /path/to/script/folder

-estaat voor editable, wat betekent dat je aan het script kunt werken en de nieuwste versie kunt oproepen zonder opnieuw te hoeven installeren

Daarna kunt u myscriptuitvoeren vanuit elke map.


Antwoord 3, autoriteit 7%

Ik doe meestal in het script:

#!/usr/bin/python
... code ...

En in terminal:

$: chmod 755 yourfile.py
$: ./yourfile.py


Antwoord 4, autoriteit 2%

Een andere gerelateerde oplossing waarin sommige mensen mogelijk geïnteresseerd zijn. Je kunt de inhoud van myscript.py ook rechtstreeks insluiten in je .bashrc-bestand op Linux (zou ook moeten werken voor MacOS denk ik)

Ik heb bijvoorbeeld de volgende functie gedefinieerd in mijn .bashrc voor het dumpen van Python-augurken naar de terminal, merk op dat de ${1}het eerste argument is dat volgt op de functienaam:

depickle() {
python << EOPYTHON
import pickle
f = open('${1}', 'rb')
while True:
   try:
      print(pickle.load(f))
   except EOFError:
      break
EOPYTHON
}

Met dit op zijn plaats (en na het herladen van .bashrc), kan ik nu depickle a.pickleuitvoeren vanaf elke terminal of map op mijn computer.


Antwoord 5

De eenvoudigste manier die in me opkomt is om “pyinstaller” te gebruiken.

  1. maak een omgeving die alle bibliotheken bevat die je in je code hebt gebruikt.
  2. activeer de omgeving en schrijf in het opdrachtvenster pip install pyinstaller
  3. Gebruik het opdrachtvenster om de hoofdmap te openen waarin zich de code maincode.py bevindt.
  4. vergeet niet om de omgeving actief te houden en schrijf pyinstaller maincode.py
  5. Controleer de map met de naam “build” en u zult het uitvoerbare bestand vinden.

Ik hoop dat deze oplossing je helpt.
GL

Other episodes