Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

My first real request for help

65 views
Skip to first unread message

Gene Heskett

unread,
Nov 19, 2013, 4:31:15 AM11/19/13
to pytho...@python.org
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?

Thanks.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

<james> abuse me. I'm so lame I sent a bug report to debian-devel-changes
-- Seen on #Debian
A pen in the hand of this president is far more
dangerous than 200 million guns in the hands of
law-abiding citizens.

Albert Dengg

unread,
Nov 19, 2013, 4:49:22 AM11/19/13
to pytho...@python.org
On Tue, Nov 19, 2013 at 04:31:15AM -0500, Gene Heskett wrote:
...
> 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?
have you tried strace -e open -ff -ofile.log ?
(it is easy to miss something in the strace output & and with -ff you
also get subprocesses (in their own files, file.log.pid1,
file.log.pid2,...)

this however, does not really look like a python problem, as from the
look of it it misses some external executable it tries to Popen()

so, you should probably on some linuxcnc/camview-emc related mailling
list/forum.

regards,
albert

ps: a more descriptive subject line would be helpfull for people to
recognize what your post is about and then can quickly decide if they
want to look at it or not.
signature.asc

Peter Otten

unread,
Nov 19, 2013, 5:16:41 AM11/19/13
to pytho...@python.org
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


Gene Heskett

unread,
Nov 19, 2013, 9:02:07 AM11/19/13
to pytho...@python.org
On Tuesday 19 November 2013 08:51:09 Albert Dengg did opine:

> On Tue, Nov 19, 2013 at 04:31:15AM -0500, Gene Heskett wrote:
> ...
>
> > 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?
>
> have you tried strace -e open -ff -ofile.log ?
> (it is easy to miss something in the strace output & and with -ff you
> also get subprocesses (in their own files, file.log.pid1,
> file.log.pid2,...)
>
The man page for strace, doesn't point that out, at least clear enough to
get my attention.

Thank you very much. I will do that, done. Got another error on the
terminal, something about the module helper not being setuid root.

module_helper is not setuid root
Realtime system did not load

This is associated with the expanded control strace now has, it is not
present otherwise.

And about 150 file.log.pid's. :) That should take a while to read.

> this however, does not really look like a python problem, as from the
> look of it it misses some external executable it tries to Popen()

Hopefully I will find a clue. Thanks again.

> so, you should probably on some linuxcnc/camview-emc related mailling
> list/forum.
>
> regards,
> albert
>
> ps: a more descriptive subject line would be helpfull for people to
> recognize what your post is about and then can quickly decide if they
> want to look at it or not.


Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

How should I know if it works? That's what beta testers are for. I
only coded it.
-- Attributed to Linus Torvalds, somewhere in a posting

Gene Heskett

unread,
Nov 19, 2013, 10:54:40 AM11/19/13
to pytho...@python.org
On Tuesday 19 November 2013 10:10:31 Gene Heskett did opine:
I went thru all of those with seeing anything but strace throwing away a
suid on a module owned by root that does a setuid $user, then complaining
about it. So I wiped that, then added sudo in front. That never exited
but went through all the motions, so I rebooted and did a cat file.log.*|
less, again without finding a smoking gun. The call to the starter script,
a .py, never made it into these logs according to grep. There was lots of
screeching because the sudo (root) environment was so different seems to be
the take away. It also chowned some stuff in my home dir.

So while I've learned another way not to make a light bulb, its still dark
here. AFAIK there is no camview-emc list, only the linuxcnc list, and this
is a case of maybe 3 people including me doing this, all of them far more
fluent in the various languages involved than I am. But lots will be using
this once we get it to the It Just Works(TM) stage.

What I want to do is cut steel, or in this case, pcb's that doesn't involve
a lot of pallet making, contact installation in the pallet, a half dozen
tool changes that require machine recalibration subroutines to be run, and
math to get a hole drilled halfway thru the board from one side, to exactly
register and meet that same hole when its turned over and drilled from the
other side.
>
The url I am working from:
<http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Adding_Digital_Zoom_To_Camview-
Emc>

If I switch the invocation to use an older version of camunits-emc, I am
now seeing an error in the terminal I have not seen before.

** (camview-emc:1653): WARNING **: /usr/local/lib/camunits/halio.so:
undefined symbol: gluOrtho2D

And I'm not sure how to fix that either, it was not an error yesterday.

Thank you.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

<woot> Put *that* in you .sig and smoke it, Knghtbrd.
<Culus> You know he will read this :>
<woot> heheheheh.

Gene Heskett

unread,
Nov 19, 2013, 11:19:26 AM11/19/13
to pytho...@python.org
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?

Thanks.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

I have great faith in fools -- self confidence my friends call it.
-- Edgar Allan Poe

xDog Walker

unread,
Nov 19, 2013, 12:07:31 PM11/19/13
to pytho...@python.org
On Tuesday 2013 November 19 08:19, Gene Heskett wrote:
> You are suggesting I edit /usr/lib/python2.6/subprocess.py?

You should use either

subprocess.Popen(["ls", "-l"])
or

subprocess.Popen("ls -l")

The argument to the first is a two element list.
The argument to the second is a string.

You used "ls -l" as the process to run, thus
" OSError: [Errno 2] No such file or directory"

See the subprocess documentation.

--
Yonder nor sorghum stenches shut ladle gulls stopper torque wet
strainers.



Tim Chase

unread,
Nov 19, 2013, 11:31:08 AM11/19/13
to Gene Heskett, pytho...@python.org
On 2013-11-19 11:19, Gene Heskett wrote:
>>> 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)
>
> You are suggesting I edit /usr/lib/python2.6/subprocess.py?

I think Peter is suggesting that line 3182 in _dynamic_tabs should
either read (the better way)

child = Popen([cmd, args])

or (the not-so-good way)

child = Popen(cmd, shell=True)

If you drop a breakpoint right before that line, you should be able
to tell what it's trying to pass into Popen:

print("DEBUGGING: %s" % repr(cmd))
child = Popen(...)

which should give you insight into what's being called.

-tkc


PS: yes, I know about using "%r" in the format string rather than
"%s" plus a repr() call, but weird things happen in the event that
the parameter is a tuple; it could also have been written

print("DEBUGGING: %r" % (cmd,))

but I find that a tad uglier.

Gene Heskett

unread,
Nov 19, 2013, 12:19:12 PM11/19/13
to Tim Chase, pytho...@python.org
On Tuesday 19 November 2013 12:12:49 Tim Chase did opine:

> On 2013-11-19 11:19, Gene Heskett wrote:
> >>> 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)
> >
> > You are suggesting I edit /usr/lib/python2.6/subprocess.py?
>
> I think Peter is suggesting that line 3182 in _dynamic_tabs should
> either read (the better way)

Now, this is a puzzle.
_dynamic_tabs is not a file in /usr/lib/python2.6, nor does it "grep" in
that directory.

I need another clue, how much are they? :).
>
> child = Popen([cmd, args])
>
> or (the not-so-good way)
>
> child = Popen(cmd, shell=True)
>
> If you drop a breakpoint right before that line, you should be able
> to tell what it's trying to pass into Popen:
>
> print("DEBUGGING: %s" % repr(cmd))
> child = Popen(...)
>
> which should give you insight into what's being called.
>
> -tkc
>
>
> PS: yes, I know about using "%r" in the format string rather than
> "%s" plus a repr() call, but weird things happen in the event that
> the parameter is a tuple; it could also have been written
>
> print("DEBUGGING: %r" % (cmd,))
>
> but I find that a tad uglier.

Thanks Tim.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

Once I finally figured out all of life's answers, they changed the
questions.

Tim Chase

unread,
Nov 19, 2013, 12:31:28 PM11/19/13
to Gene Heskett, Pytho...@python.org
On 2013-11-19 12:19, Gene Heskett wrote:
> > On 2013-11-19 11:19, Gene Heskett wrote:
> > >>> 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)
> > >
> > > You are suggesting I edit /usr/lib/python2.6/subprocess.py?
> >
> > I think Peter is suggesting that line 3182 in _dynamic_tabs should
> > either read (the better way)
>
> Now, this is a puzzle.
> _dynamic_tabs is not a file in /usr/lib/python2.6, nor does it
> "grep" in that directory.
>
> I need another clue, how much are they? :).

Doh, I misread the traceback. Looking more closely, it appears that
the file in question is "/usr/bin/axis", line 3182 in the
_dynamic_tabs *function* (or method), which is called at the
module-level on line 3326 of the same file. Edit /usr/bin/axis to
properly call Popen as mentioned in my previous email, and it should
solve this issue.

-tkc



xDog Walker

unread,
Nov 19, 2013, 12:33:07 PM11/19/13
to pytho...@python.org
On Tuesday 2013 November 19 09:19, Gene Heskett wrote:
> _dynamic_tabs is not a file in /usr/lib/python2.6, nor does it "grep" in
> that directory.

The Traceback says that _dynamic_tabs is in /usr/bin/axis .

Peter Otten

unread,
Nov 19, 2013, 12:46:54 PM11/19/13
to pytho...@python.org
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.


Ethan Furman

unread,
Nov 19, 2013, 11:47:28 AM11/19/13
to pytho...@python.org
On 11/19/2013 08:19 AM, Gene Heskett wrote:
> On Tuesday 19 November 2013 11:16:10 Peter Otten did opine:
>> Gene Heskett wrote:
>>>
>>> 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)
>
> You are suggesting I edit /usr/lib/python2.6/subprocess.py?

Yup. Just make sure and change it back after you figure out what's going on.

--
~Ethan~

Gene Heskett

unread,
Nov 19, 2013, 1:43:35 PM11/19/13
to Tim Chase, Pytho...@python.org
On Tuesday 19 November 2013 12:42:28 Tim Chase did opine:

> On 2013-11-19 12:19, Gene Heskett wrote:
> > > On 2013-11-19 11:19, Gene Heskett wrote:
> > > >>> 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)
> > > >
> > > > You are suggesting I edit /usr/lib/python2.6/subprocess.py?
> > >
> > > I think Peter is suggesting that line 3182 in _dynamic_tabs should
> > > either read (the better way)
> >
> > Now, this is a puzzle.
> > _dynamic_tabs is not a file in /usr/lib/python2.6, nor does it
> > "grep" in that directory.
> >
> > I need another clue, how much are they? :).
>
> Doh, I misread the traceback. Looking more closely, it appears that
> the file in question is "/usr/bin/axis", line 3182 in the
> _dynamic_tabs *function* (or method), which is called at the
> module-level on line 3326 of the same file. Edit /usr/bin/axis to
> properly call Popen as mentioned in my previous email, and it should
> solve this issue.
>
> -tkc

Interesting, a print cmd immediately in front of that is quite noisy:
['./camview-emc-f1oat.py', '-v', '1280x720', '-C', 'camview.cfg', '-g',
'cam.ui', '-H', 'campins.hal', '-w', '150995278']

So, I'll try this:
child = Popen(["cmd"]), but that's not the fix. Thats 11 single
quoted, csv separated strings in that "cmd", do I have to parse it and
double quote & csv every one?

So, back to the last email:
Try child = Popen([cmd,args])

I killed the machine & had to go reboot it with the reset button. I took
the camera out and plugged it in, works great in camview or cheese. Focus
seem a bit distant at close to 2" but usable.

Then I took the line with the DEBUGGING statement back out, leaving just
the print cmd above the

child = Popen([cmd,args]), in line 3182, and now get this:

Traceback (most recent call last):
File "/usr/bin/axis", line 3329, in <module>
_dynamic_tabs(inifile)
File "/usr/bin/axis", line 3185, in _dynamic_tabs
child = Popen([cmd,args])
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
AttributeError: 'list' object has no attribute 'rfind'

With the usual exit & cleanup. Has this exposed another buglet?

Thanks Tim.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

"Never underestimate the power of a small tactical nuclear weapon."

Tim Chase

unread,
Nov 19, 2013, 1:57:42 PM11/19/13
to Gene Heskett, Pytho...@python.org
On 2013-11-19 13:43, Gene Heskett wrote:
> Interesting, a print cmd immediately in front of that is quite
> noisy: ['./camview-emc-f1oat.py', '-v', '1280x720', '-C',
> 'camview.cfg', '-g', 'cam.ui', '-H', 'campins.hal', '-w',
> '150995278']

This suggests that the value of "cmd" is indeed a list of
[program_name, arguments...] which is what it should be. So the
Popen(cmd) should be right.

The next thing to verify that the working directory contains the
program that is being called, and that it's executable. So I'd add
some debugging dump, something like

print(repr(cmd))
####### added stuff below #######
import os
print("Current directory: %s" % os.getcwd())
cmd_name = cmd[0]
if os.path.isfile(cmd_name):
print("%s exists and has a mode of %o" % (
cmd_name,
os.stat(cmd_name).st_mode,
))
else:
print("%s isn't a file (missing or a directory?)" % cmd_name)
####### added stuff above #######
child = Popen(cmd)

This should give you information on where the current working
directory is, whether the "./camview-emc-float.py" is in that
directory, and whether it is executable or not.

Just an observation here, it looks like you might have a "one"
instead of an "ell" in "float" in the file-name. Intentional?

-tkc







xDog Walker

unread,
Nov 19, 2013, 2:06:16 PM11/19/13
to pytho...@python.org
On Tuesday 2013 November 19 10:43, Gene Heskett wrote:
> Interesting, a print cmd immediately in front of that is quite noisy:
> ['./camview-emc-f1oat.py', '-v', '1280x720', '-C', 'camview.cfg', '-g',
> 'cam.ui', '-H', 'campins.hal', '-w', '150995278']

The file it cannot find is apparently ./camview-emc.float.py

>So, I'll try this:
> child = Popen(["cmd"]), but that's not the fix.

That should produce the same result as before (plus gales of laughter from the
bleachers).

xDog Walker

unread,
Nov 19, 2013, 2:10:37 PM11/19/13
to pytho...@python.org
On Tuesday 2013 November 19 10:57, Tim Chase wrote:
> Just an observation here, it looks like you might have a "one"
> instead of an "ell" in "float" in the file-name.

That is exactly what I see using Monospace font where the letter and digit are
different shapes.

Mark Lawrence

unread,
Nov 19, 2013, 2:22:13 PM11/19/13
to pytho...@python.org
On 19/11/2013 19:06, xDog Walker wrote:
> On Tuesday 2013 November 19 10:43, Gene Heskett wrote:
>> Interesting, a print cmd immediately in front of that is quite noisy:
>> ['./camview-emc-f1oat.py', '-v', '1280x720', '-C', 'camview.cfg', '-g',
>> 'cam.ui', '-H', 'campins.hal', '-w', '150995278']
>
> The file it cannot find is apparently ./camview-emc.float.py
>
>> So, I'll try this:
>> child = Popen(["cmd"]), but that's not the fix.
>
> That should produce the same result as before (plus gales of laughter from the
> bleachers).
>

Just to be sure is it a simple typo "f1oat" with a one instead of
"float" with an ell?

--
Python is the second best programming language in the world.
But the best has yet to be invented. Christian Tismer

Mark Lawrence

xDog Walker

unread,
Nov 19, 2013, 2:26:49 PM11/19/13
to pytho...@python.org
On Tuesday 2013 November 19 10:57, Tim Chase wrote:
> Just an observation here, it looks like you might have a "one"
> instead of an "ell" in "float" in the file-name.

Gene,
In an earlier email in this thread I lied when I stated the name of the
file you were missing (I retyped what I thought I saw rather than
copy+pasting).

Tim Chase caught what is most likely your immediate problem: a digit
one rather the letter ell in the filename. Where that filename came
from is where you should be looking, imho.

Gene Heskett

unread,
Nov 19, 2013, 4:39:52 PM11/19/13
to Tim Chase, Pytho...@python.org
On Tuesday 19 November 2013 16:03:23 Tim Chase did opine:

> On 2013-11-19 13:43, Gene Heskett wrote:
> > Interesting, a print cmd immediately in front of that is quite
> > noisy: ['./camview-emc-f1oat.py', '-v', '1280x720', '-C',
> > 'camview.cfg', '-g', 'cam.ui', '-H', 'campins.hal', '-w',
> > '150995278']
>
> This suggests that the value of "cmd" is indeed a list of
> [program_name, arguments...] which is what it should be. So the
> Popen(cmd) should be right.
>
> The next thing to verify that the working directory contains the
> program that is being called, and that it's executable. So I'd add
> some debugging dump, something like
>
> print(repr(cmd))
> ####### added stuff below #######
> import os
> print("Current directory: %s" % os.getcwd())
> cmd_name = cmd[0]
> if os.path.isfile(cmd_name):
> print("%s exists and has a mode of %o" % (
> cmd_name,
> os.stat(cmd_name).st_mode,
> ))
> else:
> print("%s isn't a file (missing or a directory?)" % cmd_name)
> ####### added stuff above #######
> child = Popen(cmd)
>
> This should give you information on where the current working
> directory is, whether the "./camview-emc-float.py" is in that
> directory, and whether it is executable or not.
>
> Just an observation here, it looks like you might have a "one"
> instead of an "ell" in "float" in the file-name. Intentional?
>
> -tkc

That is a possibility, I know I had some file not found errors that were
only fixed by do an mv (copy/paste for ls listing camview-emc-float.py, in
which case the miss-spelling is how its name on the web page I pulled it
from.

Adding , shell=True to the Popen fixed it so it runs, but with unusual
results. It is SUPPOSED to make tab controlled overlay over the linuxcnc
backplot window when that tab is selected. The tab is there, but the
window is blank because its opening a new window. And the final halio
stanza of the config isn't running, I presume because its also reporting:

** (camview-emc-float.py:3775): WARNING **:
/usr/local/lib/camunits/halio.so: undefined symbol: gluOrtho2D

on the linuxcnc launch.

I do not have libgl installed because then the other camera didn't work,
but am using the mesa-swx11 version so it would work. So what I'll
probably have to do is install libgl long enough to rebuild halio.so and
install it. I think its named wrong, it should be Duncan, like the yo-yo
maker. :)

So I guess thats next, re-install libgl & -dev, rebuild halio.so, (no error
yip about a missing GL/gl.h now, and then see if it works with this camera.
But I have a bet with myself that it will look like its out of horizontal
synch. Actually it was a black screen, reinstall the lib gl-mesa-swx11
stuff, the camera works again it its own window, and I still see the above
undefined gluOrtho2D error.

Thanks a bunch Tim, but I think I'll see if the halio.c author can speak to
this one.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

You're too beautiful to ignore. Too much woman.
-- Kirk to Yeoman Rand, "The Enemy Within", stardate
unknown

Gene Heskett

unread,
Nov 19, 2013, 5:16:43 PM11/19/13
to pytho...@python.org, Mark Lawrence
On Tuesday 19 November 2013 17:02:37 Mark Lawrence did opine:

> On 19/11/2013 19:06, xDog Walker wrote:
> > On Tuesday 2013 November 19 10:43, Gene Heskett wrote:
> >> Interesting, a print cmd immediately in front of that is quite noisy:
> >> ['./camview-emc-f1oat.py', '-v', '1280x720', '-C', 'camview.cfg',
> >> '-g', 'cam.ui', '-H', 'campins.hal', '-w', '150995278']
> >
> > The file it cannot find is apparently ./camview-emc.float.py
> >
> >> So, I'll try this:
> >> child = Popen(["cmd"]), but that's not the fix.
> >
> > That should produce the same result as before (plus gales of laughter
> > from the bleachers).
>
Expected. Python code isn't my forte obviously. :)

> Just to be sure is it a simple typo "f1oat" with a one instead of
> "float" with an ell?

That it was, now renamed. And now that I know it works albeit in a
separate window, I will now go back to the original syntax just to check,
but no, the additional ", shell=True" without the double-quotes, inside the
parens is still needed.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

I never met a man I didn't want to fight.
-- Lyle Alzado, professional football lineman

Gene Heskett

unread,
Nov 19, 2013, 5:18:22 PM11/19/13
to pytho...@python.org
On Tuesday 19 November 2013 17:17:12 xDog Walker did opine:

> On Tuesday 2013 November 19 10:57, Tim Chase wrote:
> > Just an observation here, it looks like you might have a "one"
> > instead of an "ell" in "float" in the file-name.
>
> Gene,
> In an earlier email in this thread I lied when I stated the name of
> the file you were missing (I retyped what I thought I saw rather than
> copy+pasting).
>
> Tim Chase caught what is most likely your immediate problem: a digit
> one rather the letter ell in the filename. Where that filename came
> from is where you should be looking, imho.

That will be called to the attention of the wiki submitter. I doubt if its
that important as long as its consistent though. Thank you.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

I am a bookaholic. If you are a decent person, you will not sell me
another book.

Gene Heskett

unread,
Nov 19, 2013, 5:01:42 PM11/19/13
to pytho...@python.org
On Tuesday 19 November 2013 16:48:40 xDog Walker did opine:

> On Tuesday 2013 November 19 10:57, Tim Chase wrote:
> > Just an observation here, it looks like you might have a "one"
> > instead of an "ell" in "float" in the file-name.
>
> That is exactly what I see using Monospace font where the letter and
> digit are different shapes.

And I see exactly that in firefox. That l is indeed a 1. No wonder I
couldn't type it, but could copy/paste it. Until I renamed it with an l.

That bit of confusion first bit me hard, darned near 30 tears ago, building
a trig functions library for the Microware C compiler running on a trs-80
Color Computer. Source published in the Rainbow magazine, Offset plates
made from a DMP printer. I don't remember that fondly at all. I traded
printers because of that, the 9 pin DMP's used exactly the same image for
both. I had quite a bit more gray hair when that was done. :(

Thanks for making me go look again. :)

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

"Ninety percent of baseball is half mental."
-- Yogi Berra

Gene Heskett

unread,
Nov 19, 2013, 5:23:31 PM11/19/13
to pytho...@python.org
On Tuesday 19 November 2013 17:20:54 Ethan Furman did opine:

> On 11/19/2013 08:19 AM, Gene Heskett wrote:
> > On Tuesday 19 November 2013 11:16:10 Peter Otten did opine:
> >> Gene Heskett wrote:
> >>> 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)
> >
> > You are suggesting I edit /usr/lib/python2.6/subprocess.py?
>
> Yup. Just make sure and change it back after you figure out what's
> going on.
>
> --
> ~Ethan~

Tried, no deal, took it back to the -bak copy.

Where I need the Popen patch was actually in /usr/bin/axis, which is the
name of the programs gui I run. There are several available.

Many Thanks.

Cheers, Gene
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)

<Overfiend> Joy: Hey, I'm an asshole. Assholes emit odious gas.
That's what we do.
0 new messages