Skapa ett eget commando för python program
Skapa ett eget commando för python program
Jag har kodat ett program i python och nu skulle jag vilja skapa ett kommando som kör programmet från terminalen. Detta helst utan hjälp av alias som jag vet finns till hands men jag skulle vilja att användarna av programmet slipper dola med alias om de vet vad det är. De ska helt enkelt bara skriva ett kommando och mitt program ska köras som villket program som helst.
Hur göra?
Tack!
Hur göra?
Tack!
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
Re: Skapa ett eget commando för python program
Om hela programmet ligger i en enda fil så är det enkelt. Lägg filen i /usr/local/bin så hittas den automatiskt.
-
- Inlägg: 339
- Blev medlem: 25 mar 2008, 21:01
- OS: Ubuntu
- Utgåva: 16.04 Xenial Xerus LTS
- Ort: Linköping
Re: Skapa ett eget commando för python program
Om exekveringsfilen (eller en länk till den) ligger i t ex /usr/bin så kör man den genom att bara skriva namnet på den.
Det går även att lägga en script där som startar programmet.
Det går även att lägga en script där som startar programmet.
Rädda skog med ett musklick: http://www.ettklickforskogen.se/
Läsvärt: http://www.gnu.org/philosophy/right-to-read.html
Läsvärt: http://www.gnu.org/philosophy/right-to-read.html
-
- Inlägg: 1904
- Blev medlem: 20 jun 2008, 18:09
- OS: Ubuntu
- Utgåva: 12.04 Precise Pangolin LTS
- Ort: Malmö
Re: Skapa ett eget commando för python program
Det kosher är väl att lägga det i /usr/bin eller /usr/local/bin.apan skrev:Jag har kodat ett program i python och nu skulle jag vilja skapa ett kommando som kör programmet från terminalen. Detta helst utan hjälp av alias som jag vet finns till hands men jag skulle vilja att användarna av programmet slipper dola med alias om de vet vad det är. De ska helt enkelt bara skriva ett kommando och mitt program ska köras som villket program som helst.
Hur göra?
Tack!
Hämtat från Filesystem Hierarchy Standard/usr/local : Local hierarchy
Purpose
The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable amongst a group of hosts, but not found in /usr.
Locally installed software must be placed within /usr/local rather than /usr unless it is being installed to replace or upgrade software in /usr.
Även /usr/local/bin ligger i standardsökvägen i Ubuntu, t.o.m. innan /usr/bin. Så har du två program som heter likadant i /usr/local/bin resp. /usr/bin så kommer programet i /usr/local/bin köras istället för det i /usr/bin. Först i sökvägen ligger ~/bin, d.v.s. körbara filer i den enskilda användarens /bin-katalog har alltid högst prioritet följt av /usr/local/sbin, /usr/local/bin, /usr/sbin, /usr/bin, etc, etc.
Re: Skapa ett eget commando för python program
ok, tack för alla svar.
Det förutsätter alltså att jag skapar en binär fil av mitt program som för tillfället är en hop python script. Kanske vet någon även den enklaste metoden att göra detta?
Låt säga att jag inte har en binärfil. Går det ändå att få till ett kommando som kan kör Main.py filen utan att använa sig av alias?
Det förutsätter alltså att jag skapar en binär fil av mitt program som för tillfället är en hop python script. Kanske vet någon även den enklaste metoden att göra detta?
Låt säga att jag inte har en binärfil. Går det ändå att få till ett kommando som kan kör Main.py filen utan att använa sig av alias?
Re: Skapa ett eget commando för python program
Man måste väl ha
i början på sitt pythonskript?
Kod: Markera allt
#!/usr/bin/env python
-
- Inlägg: 1904
- Blev medlem: 20 jun 2008, 18:09
- OS: Ubuntu
- Utgåva: 12.04 Precise Pangolin LTS
- Ort: Malmö
Re: Skapa ett eget commando för python program
Helt rätt. Ubuntu kommer med en pythontolk så det skall räcka med att specificera längst uppe i skriptet du skapat att du vill att skriptet skall tolkas av pythontolken. Samma som om du sätter #!/bin/bash för att specificera att du vill att skriptet skall tolkas av bash eller #!/usr/bin/perl för att tala om att perltolken skall användas.hagelnut skrev:Man måste väl hai början på sitt pythonskript?Kod: Markera allt
#!/usr/bin/env python
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
Re: Skapa ett eget commando för python program
Som sagt räcker det att lägga in en "shebang" (#!...) och göra filen exekverbar (chmod +x). Men om du har flera moduler som du läser in med import så måste du lägga dem under /usr/local/lib/python2.5/site-packages.
Fast när jag tänker efter lite, Rätt® sätt att göra det på är förmodligen att använda distutils. Distutils fungerar även bra med py2exe om du vill skapa binärer till Windows.
Fast när jag tänker efter lite, Rätt® sätt att göra det på är förmodligen att använda distutils. Distutils fungerar även bra med py2exe om du vill skapa binärer till Windows.