py2exe & pyxml

K

Kathleen Kudzma

Does anyone know how to resolve the following problem that I'm getting in
Python 2.2 and 2.3?

PROBLEM: When I try to create a classReader object I get an exception:
"SAXReaderNotAvailable: No parsers found". This only happens when I run the
..EXE; it does not happen if I run the .PY file. When I'm running the .EXE
this exception doesn't happen immediately. It happens as soon as I try to
create a classReader object.

Please see the warnings that I get below when I create the .EXE:
**********

_________________________________________________________________
Try MSN Messenger 6.0 with integrated webcam functionality!
http://www.msnmessenger-download.com/tracking/reach_webcam
 
M

Martin v. =?iso-8859-15?q?L=F6wis?=

Kathleen Kudzma said:
PROBLEM: When I try to create a classReader object I get an exception:
"SAXReaderNotAvailable: No parsers found". This only happens when I
run the .EXE; it does not happen if I run the .PY file. When I'm
running the .EXE this exception doesn't happen immediately. It
happens as soon as I try to create a classReader object.

You have to explicitly ask py2exe to include pyexpat in the
executable. RTFM.

Regards,
Martin
 
M

Mike Thompson

Kathleen Kudzma said:
Does anyone know how to resolve the following problem that I'm getting in
Python 2.2 and 2.3?

PROBLEM: When I try to create a classReader object I get an exception:
"SAXReaderNotAvailable: No parsers found". This only happens when I run the
.EXE; it does not happen if I run the .PY file. When I'm running the .EXE
this exception doesn't happen immediately. It happens as soon as I try to
create a classReader object.

Please see the warnings that I get below when I create the .EXE:

Yes, I've just had the same problem -- using py3.2 and py2exe v0.4.2

After spending some time in a debugger following the execution path, I found
out that the module xml.sax.drivers2.drv_pyexpat is the one that is missing.
It gets loaded through a call to __import__ (see _xmlplus.sax.saxexts.py, line
42) which is why py2exe doesn't pick it up as being necessary.

All of which means it has to be explicitly included in the build. So, I was
able to solve the problem with the following setup.py command line:

python setup.py py2exe --includes xml.sax.drivers2.drv_pyexpat

I've no idea what Martin was referring to when he said RTFM, because I could
find nothing about this. (Then again, perhaps I'm misunderstanding what he
means by RTFM?)
 
S

Steven Bell

Mike Thompson said:
Yes, I've just had the same problem -- using py3.2 and py2exe v0.4.2

After spending some time in a debugger following the execution path, I found
out that the module xml.sax.drivers2.drv_pyexpat is the one that is missing.
It gets loaded through a call to __import__ (see _xmlplus.sax.saxexts.py, line
42) which is why py2exe doesn't pick it up as being necessary.

All of which means it has to be explicitly included in the build. So, I was
able to solve the problem with the following setup.py command line:

python setup.py py2exe --includes xml.sax.drivers2.drv_pyexpat

I've no idea what Martin was referring to when he said RTFM, because I could
find nothing about this. (Then again, perhaps I'm misunderstanding what he
means by RTFM?)

RTFM is tech jargon for "read the f**king manual".
 
M

M.-A. Lemburg

Steven said:
RTFM is tech jargon for "read the f**king manual".

In the Python world this usually reads as "Read The Felicitous Manual" :)

--
Marc-Andre Lemburg
eGenix.com

Professional Python Software directly from the Source (#1, Oct 09 2003)________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::
 
W

Will Stuyvesant

[[email protected] (Martin v. Löwis)]
You have to explicitly ask py2exe to include pyexpat in the
executable. RTFM.

*If* you are going to say RTFM you'd better make sure it *is* in the
manual. Otherwise you'd better s-h-a-d-d-u-p.

Next time you feel like saying "RTFM" in comp.lang.python either
(1) say it in comp.lang.java
(2) copy and paste the URL to the manual and point out the Section you
feel they should read.
 
M

Mike Thompson

Martin v. Löwis said:
[[email protected] (Martin v. Löwis)]
You have to explicitly ask py2exe to include pyexpat in the
executable. RTFM.

*If* you are going to say RTFM you'd better make sure it *is* in the
manual. Otherwise you'd better s-h-a-d-d-u-p.

See http://starship.python.net/crew/theller/py2exe/,
in "Flags to include or exclude modules or packages:"

But, Martin, there's absolutely no mention of 'expat' in this entire document,
much less that section. So, how on earth was the advice 'RTFM' to help?

In the end, I was able to find an answer by stepping through code with a
debugger to find the module which wasn't being included. THAT
('xml.sax.drivers2.drv_pyexpat') was the unknown. THAT was the information
sort, by the original poster, I'm sure. If it wasn't then they needed a lot
more hand-holding than you're terse abuse.

In any case, I'll see if I can get this added to the pyexe documentation,
because I'd imagine this must be a recurring problem ... surely? Oddly I could
find absolutely nothing on this subject, apart from this lone thread, when I
originally googled around for an answer.
 
M

Mike Thompson

Steven Bell said:
"Mike Thompson":

RTFM is tech jargon for "read the f**king manual".


Yes. Except its not in the f**king manual, so I've no idea why Matrin is being
abusive.
 
M

Martin v. =?iso-8859-15?q?L=F6wis?=

Mike Thompson said:
[[email protected] (Martin v. Löwis)]
You have to explicitly ask py2exe to include pyexpat in the
executable. RTFM.
[...]

But, Martin, there's absolutely no mention of 'expat' in this entire
document, much less that section. So, how on earth was the advice
'RTFM' to help?

Reading alone is not enough - you also have to understand what you
read.

I say "You have to explicitly ask py2exe to include pyexpat in the
executable", and the documentation says

"Flags to include or exclude modules or packages:

--includes or -i list
comma separated list of modules to include.
Note that includes overrides excludes
"

You have to combine these, and come up with a strategy of including
pyexpat.

I did not say that the documentation says that you have to include
pyexpat. However, in reading the documentation, you should learn *how*
you include pyexpat.
In the end, I was able to find an answer by stepping through code
with a debugger to find the module which wasn't being included. THAT
('xml.sax.drivers2.drv_pyexpat') was the unknown. THAT was the
information sort, by the original poster, I'm sure. If it wasn't
then they needed a lot more hand-holding than you're terse abuse.

Ok, that may be the case - so you would have to include
xml.sax.drivers2.drv_pyexpat as well.

Regards,
Martin
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top