Sida 1 av 1

Skapa ett eget commando för python program

Postat: 25 jan 2009, 19:33
av apan
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!

Re: Skapa ett eget commando för python program

Postat: 25 jan 2009, 19:42
av Lars
Om hela programmet ligger i en enda fil så är det enkelt. Lägg filen i /usr/local/bin så hittas den automatiskt.

Re: Skapa ett eget commando för python program

Postat: 25 jan 2009, 19:45
av Inhuman Soul
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.

Re: Skapa ett eget commando för python program

Postat: 25 jan 2009, 19:50
av djkmmo
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!
Det kosher är väl att lägga det i /usr/bin eller /usr/local/bin.
/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.
Hämtat från Filesystem Hierarchy Standard

Ä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

Postat: 25 jan 2009, 20:14
av apan
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?

Re: Skapa ett eget commando för python program

Postat: 25 jan 2009, 20:15
av hagelnut
Man måste väl ha

Kod: Markera allt

#!/usr/bin/env python
i början på sitt pythonskript?

Re: Skapa ett eget commando för python program

Postat: 25 jan 2009, 20:23
av djkmmo
hagelnut skrev:Man måste väl ha

Kod: Markera allt

#!/usr/bin/env python
i början på sitt pythonskript?
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.

Re: Skapa ett eget commando för python program

Postat: 25 jan 2009, 20:33
av Lars
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.