[ python-Bugs-1398781 ] Example in section 5.3 "Pure Embedding" doesn't work.

SourceForge.net noreply at sourceforge.net
Fri Jan 6 23:48:08 CET 2006


Bugs item #1398781, was opened at 2006-01-06 11:23
Message generated for change (Comment added) made by wrstuden
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1398781&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Extension Modules
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Bill Studenmund (wrstuden)
Assigned to: Nobody/Anonymous (nobody)
Summary: Example in section 5.3 "Pure Embedding" doesn't work.

Initial Comment:
I want to use Python to script an existing application.
So I was trying the code on
http://docs.python.org/ext/pure-embedding.html and
found it didn't work.

I am using pkgsrc on NetBSD.

I have run into two issues. First,
PyDict_GetAttrString() does not exist. I have found
this to be true for both Python 2.2 and 2.4, the two
versions I currently have installed.

I made the simple change to use
PyObject_GetAttrString(), which looks right.

Second, python can't find the module. I named the file
multiply.py, and it wouldn't load.

It turns out that I had to set PYTHONPATH in my
envirnment to make it work. Setting it to '' (empty
string) worked.

The odd thing about the path issue is that if I ran the
python interpreter, it was able to find the module w/o
my changing the environment.

----------------------------------------------------------------------

>Comment By: Bill Studenmund (wrstuden)
Date: 2006-01-06 14:48

Message:
Logged In: YES 
user_id=148388

Great to hear about PyDict_GetAttrString(). I assume that
PyObject_GetAttrString() was the correct change?

It turns out the second issue deals with path processing in
the embedded code being somehow different from processing in
the interpreter. I think the interpreter sets something up
that isn't present for the embedded example. I will really
appreciate it if we could figure out what's different and
add it to the docs. The pictured behavior for "call" is
exactly what I want, but not what I get.

To be more specific, I had my code print Py_GetPath(), and I
compared that with sys.path from the interpreter.

C code looking for foo.py (which is in '.'):

> ./obj.i386/test foo
Path is
'/usr/pkg/lib/python24.zip:/usr/pkg/lib/python2.4/:/usr/pkg/lib/python2.4/plat-netbsd3:/usr/pkg/lib/python2.4/lib-tk:/usr/pkg/lib/python2.4/lib-dynload'
ImportError: No module named foo
utest: loading module foo: No such file or directory

In the python interpreter:

> python2.4
Python 2.4.1 (#1, Dec 28 2005, 15:58:29) 
[GCC 3.3.3 (Wasabi NetBSD nb3 20040520)] on netbsd3
Type "help", "copyright", "credits" or "license" for more
information.
>>> import sys
>>> print sys.path
['', '/usr/pkg/lib/python24.zip', '/usr/pkg/lib/python2.4',
'/usr/pkg/lib/python2.4/plat-netbsd3',
'/usr/pkg/lib/python2.4/lib-tk',
'/usr/pkg/lib/python2.4/lib-dynload',
'/usr/pkg/lib/python2.4/site-packages']

The key difference is the '' at the front of the path in the
interpreter.

Any thoughts? Is there a different list or FAQ I should look at?

----------------------------------------------------------------------

Comment By: Reinhold Birkenfeld (birkenfeld)
Date: 2006-01-06 11:33

Message:
Logged In: YES 
user_id=1188172

The PyDict_GetAttrString issue is corrected in the current
devel docs.

No clue about the other.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1398781&group_id=5470


More information about the Python-bugs-list mailing list