Seite 1 von 1

python executeable wrappen

Verfasst: Montag 8. November 2010, 16:54
von thomas15
hallo schlangenbeschwoerer,

eine frage tut sich bei mir auf...

ich will mein projekt veroeffentlichen und dafuer sollen beim programstart mehrere module geladen werden damit wichtige befehle im interpreter verfuegbar sind.
ist fuer uebrigens unix...

ich habe ein csh script:

Code: Alles auswählen

#!/usr/bin/env csh

source environment.csh

python $*
ich tendiere dazu die letzte zeile mit

Code: Alles auswählen

python 'from my_modules import *' $*
ersetzen. natuerlich sollen alle anderen parameter an meine software weitergegeben werden, deswegen der .
so gehts nicht. weiss jemand alternativen?

ich bin mir sicher dass jemand eine idee hat.

gruss!

Re: python executeable wrappen

Verfasst: Montag 8. November 2010, 17:03
von cofi
Nochmal langsam zum mitschreiben: Du willst Module laden, die dann fuer alle anderen Module verfuegbar sind und das vor dem Start? Das geht so nicht.

Die saubere Alternative #1 is das in dein Programm einzubauen. Saubere Alternative #2 ist die Module deinem Programm als Parameter zu uebergeben.

Vllt koenntest du noch etwas mehr auf deine Absicht eingehn?

Re: python executeable wrappen

Verfasst: Montag 8. November 2010, 17:17
von thomas15
hi cofi, danke fuer die antwort!

dem benutzer sollen wichtige funktionen wie das einlesen von files usw. gleich zu verfuegung stehen ohne dass er noch extra ein

Code: Alles auswählen

from my_module.io import fileRead 
tippseln soll.

allerdings soll der user die moeglichkeit haben eigene scripte zu starten koennen.
also sowas wie

Code: Alles auswählen

projectName myCustomScript.py
es ist eine software fuer biologen die sich nicht gerne mit eigenheiten der programiersprache rumaergern wollen.

zur alternative #1:
ja, das muss irgendwie eingebaut werden, nur wie?

zur alternative #2:
ja, das habe ich ja mit

Code: Alles auswählen

python 'from my_modules import *' $*
angedacht, allerdings geht das so nicht...

hat jemand alternative #3 zur hand? :idea:

Re: python executeable wrappen

Verfasst: Montag 8. November 2010, 17:40
von BlackJack
@thomas15: Jemand der sich nicht mit Programmiersprachen herumärgern will, soll halt die Finger von Programmiersprachen lassen. ;-)

Mal im Ernst, wenn sie es nicht hinbekommen notwendige Module zu importieren sollten sie vielleicht wirklich nicht programmieren. Das was Du vorhast ist IMHO zu viel Magie um "pythonisch" zu sein.

Re: python executeable wrappen

Verfasst: Montag 8. November 2010, 17:43
von cofi
Ich habe es noch nicht so ganz verstanden: Ist das eine Art interaktiver Interpreter oder wird der von Python benutzt? Was heisst zur Verfuegung stehen? Und warum kann das Programm das nicht laden, warum muss das nebenher laufen?

Nein mit Alternative #2 meinte ich sowas der Art:

program.py

Code: Alles auswählen

...
def main(args, namespace):
    #solve world's problems
    ...
frontend.py

Code: Alles auswählen

import my_modules
import program
import sys

program.main(sys.argv, my_modules)
Shell

Code: Alles auswählen

python frontend.py

Re: python executeable wrappen

Verfasst: Montag 8. November 2010, 19:03
von thomas15
es soll eben beides sein, ein interaktiver interpreter wo der biolog an seinen daten rumspielen kann.
ebenso soll der bio mensch scripte ausfuehren koennen die man ihm vorgegeben hat und die er nur ein wenig modifizieren musste.

@ cofi
ja, ich glaube du hast mich auf eine idee gebracht.

@ blackjack
ueblicherweise sind menschen faul und wollen mit dem wenigsten aufwand das maximale ergebnis rausholen. deshalb ist es einfach nur benutzerfreundlich wenn der user nicht wissen muss wo er die funktionen findet sondern diese einfach benutzen kann. kurze einarbeitung = schnelle ergebnisse = wiederholte benutzung = gluecklicher benutzer
dem normalen menschen da draussen ist es egal obs pythonisch, rubisch oder was auch immer ist...

danke schonmal!

Re: python executeable wrappen

Verfasst: Montag 8. November 2010, 20:06
von fhoech
Also ich bin mir nicht sicher, aber suchst du sowas wie

Code: Alles auswählen

python -i -c "from mymodule import a"
Dadurch wird erst der Code in den Anführungszeichen ausgeführt, dann wechselt der Interpreter in den interaktiven Modus.
Alternativ

Code: Alles auswählen

python -i myscript.py
(in myscript.py stehen dann die Importe etc.)

Re: python executeable wrappen

Verfasst: Montag 8. November 2010, 20:12
von cofi
Nur laesst sich das nicht mit einer weiteren Datei kombinieren:

Code: Alles auswählen

%> echo "print bar" > tmp/test.py
%> python -c "print 'foo'" tmp/test.py
foo

Re: python executeable wrappen

Verfasst: Dienstag 9. November 2010, 09:43
von thomas15
danke fuer euere tollen vorschlaege, ich bin mir sicher dass ich mir daraus was basteln kann!

gruesse und danke!
:D

Re: python executeable wrappen

Verfasst: Dienstag 9. November 2010, 14:38
von mkesper
Ich vermute, du willst in etwa so etwas wie es IPython z.B. für pylab und scipy macht.
EDIT: Nennt sich IPython Profiles.