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%
-
Voeg een shebang-regel toe aan de bovenkant van het script:
#!/usr/bin/env python
-
Markeer het script als uitvoerbaar:
chmod +x myscript.py
-
Voeg de dir die het bevat toe aan je
PATH
variabele. (Als je wilt dat het blijft plakken, moet je dit doen in.bashrc
of.bash_profile
in je thuismap.)export PATH=/path/to/script:$PATH
Antwoord 2, autoriteit 60%
De beste manier, die platformonafhankelijk is, is om setup.py
aan te maken, er een toegangspunt in te definiëren en te installeren met pip
.
Stel dat je de volgende inhoud van myscript.py
hebt:
def run():
print('Hello world')
Vervolgens voeg je setup.py
toe 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
-e
staat 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 myscript
uitvoeren 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.pickle
uitvoeren vanaf elke terminal of map op mijn computer.
Antwoord 5
De eenvoudigste manier die in me opkomt is om “pyinstaller” te gebruiken.
- maak een omgeving die alle bibliotheken bevat die je in je code hebt gebruikt.
- activeer de omgeving en schrijf in het opdrachtvenster
pip install pyinstaller
- Gebruik het opdrachtvenster om de hoofdmap te openen waarin zich de code maincode.py bevindt.
- vergeet niet om de omgeving actief te houden en schrijf
pyinstaller maincode.py
- Controleer de map met de naam “build” en u zult het uitvoerbare bestand vinden.
Ik hoop dat deze oplossing je helpt.
GL