executing a command

andrea valle andrea.valle at unito.it
Sun Jun 5 06:22:35 EDT 2005


Thanks,
I solved it. The problem depended on IDLE. If I invoke a file from 
command line with os.exec* everything works perfectly.-
Best


-a-

On 5 Jun 2005, at 01:07, Tiago Stürmer Daitx wrote:

> Hello,
>
> When you use one of the os.exec*p functions python looks for the
> specified file in the directories refered by os.environ['PATH']. If
> and _only_ if your os.enviroment['PATH'] isn't set then it looks in
> os.defpath - you can check this at
> http://www.python.org/doc/current/lib/os-path.html#l2h-1557
>
> So, my advice is that you first try printing your os.environ['PATH']
> to check wheter it includes the program that you are calling or not
> (and then you will have to include it). In the case that it isn't set,
> then check os.defpath.
>
> Also, when you use one of the functions os.exec that requires a path
> variable to be passed (ie. the ones that doesn't have 'p' in their
> names) the path can be relative or absolute, but it must include the
> file name (and not only the dir where the file is).
>
> And for each one of these os.exec* functions the first argument will
> always be used as the program "name" (argv[0]), so unless you a reason
> to do otherwise, pass the same name as the file that you are calling.
>
>
> Regards,
> Tiago S Daitx
>
> On 6/4/05, andrea valle <marta_andrea at tele2.it> wrote:
>> Hi to all,
>> I need to run a program from inside python (substantially, algorithmic
>> batch processing).
>> I'm on mac osx 10.3.8 with python 2.3 framework and macpython.
>>
>> Trying to use exec*, I checked references, Brueck & Tanner, and then
>> grab this code from effbot:
>>
>>>>> program = "python"
>>>>> def run(program, *args):
>>         os.execvp(program, (program,) +  args)
>>         print "ok"
>>
>>>>> run("python", "/Users/apple/Desktop/prova.py")
>>
>> Traceback (most recent call last):
>>    File "<pyshell#50>", line 1, in -toplevel-
>>      run("python", "/Users/apple/Desktop/prova.py")
>>    File "<pyshell#49>", line 2, in run
>>      os.execvp(program, (program,) +  args)
>>    File
>> "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/
>> python2.3/os.py", line 336, in execvp
>>      _execvpe(file, args)
>>    File
>> "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/
>> python2.3/os.py", line 374, in _execvpe
>>      func(fullname, *argrest)
>> OSError: [Errno 45] Operation not supported
>>
>> This OSError seems to be consistend with all exec family. What does it
>> mean and how to use exec?
>>
>> I also tried with. os.system. It works if I invoke python, but it 
>> fails
>> (in a way I don't know) when I invoke other programs.
>>
>> For example:
>> command = "python /Users/apple/Desktop/test.py"
>>>>> os.system(command)
>> 0
>> (test.py write a string in a file. It works)
>>
>> But with lilypond or with latex I have no output (and in fact it
>> doesn't give 0 as result):
>>
>>>>> command = "lilypond /Users/apple/Desktop/test.ly"
>>>>> os.system(command)
>> 32512
>>>>> command = "latex /Users/apple/Desktop/test.tex"
>>>>> os.system(command)
>> 32512
>>
>> Any help is much appreciated
>>
>> Thanks a lot
>>
>> -a-
>>
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>
>
Andrea Valle
Laboratorio multimediale "G. Quazza"
Facoltà di Scienze della Formazione
Università degli Studi di Torino
andrea.valle at unito.it




More information about the Python-list mailing list