My first real request for help

Peter Otten __peter__ at web.de
Tue Nov 19 18:46:54 CET 2013


Gene Heskett wrote:

> On Tuesday 19 November 2013 11:16:10 Peter Otten did opine:
> 
>> Gene Heskett wrote:
>> > Old python, 2.6.4 I believe, not update able from the Ubuntu 10.04.3
>> > LTS repo's.
>> > 
>> > Should be a mauchs nichs as the code was written on, and is running
>> > on, several of these same linuxcnc installs.
>> > 
>> > But when I switch in, as one of the plugins a new .py version of
>> > camview- emc, I get this when I attempt to run linuxcnc -l, where the
>> > -l is "use the same config as last time" option.
>> > 
>> > Starting LinuxCNC...
>> > 
>> > Traceback (most recent call last):
>> >   File "/usr/bin/axis", line 3326, in <module>
>> >   
>> >     _dynamic_tabs(inifile)
>> >   
>> >   File "/usr/bin/axis", line 3182, in _dynamic_tabs
>> >   
>> >     child = Popen(cmd)
>> >   
>> >   File "/usr/lib/python2.6/subprocess.py", line 633, in __init__
>> >   
>> >     errread, errwrite)
>> >   
>> >   File "/usr/lib/python2.6/subprocess.py", line 1139, in
>> >   _execute_child
>> >   
>> >     raise child_exception
>> > 
>> > OSError: [Errno 2] No such file or directory
>> > 
>> > No clue, even when straced, as to what file might be missing.
>> > 
>> > So, how do I find out?
>> 
>> How about inserting a
>> 
>> print cmd
>> 
>> before the line
>> 
>> child = Popen(cmd)
>> 
>> ? Depending on its value it may not even be a missing command, e. g.
>> This doesn't work:
>> 
>> Python 2.6.7 (r267:88850, Sep 28 2012, 16:26:39)
>> [GCC 4.6.1] on linux2
>> Type "help", "copyright", "credits" or "license" for more information.
>> 
>> >>> import subprocess
>> >>> subprocess.Popen("ls -1")
>> 
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>>   File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
>>     errread, errwrite)
>>   File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child
>>     raise child_exception
>> OSError: [Errno 2] No such file or directory
>> 
>> But this works:
>> >>> subprocess.Popen(["ls", "-1"])
>> 
>> <subprocess.Popen object at 0x7f8b31c5cfd0>
>> 
>> >>> alpha
>> 
>> beta
>> gamma
>> 
>> And this works, too (but is a bit less robust):
>> 
>> subprocess.Popen("ls -1", shell=True)
>> <subprocess.Popen object at 0x7f8b31c5cd90>
>> 
>> >>> alpha
>> 
>> beta
>> gamma
> 
> You are suggesting I edit /usr/lib/python2.6/subprocess.py?

No, first and foremost I suggested that you find out the actual value of 
cmd.

Only if that's indeed

(a) a string and
(b) contains a command with options

my demo shows two possible fixes that you can apply to the Popen() call in 
the _dynamic_tabs() function:

(1) The clean one: Make sure that cmd is a list with the executable as the 
first item and the options as the following items (this will require changes 
in other places), or

(2) The quick and dirty one: Leave everything as is and add shell=True to 
the Popen() call.





More information about the Python-list mailing list