Issue1398781
Created on 2006-01-06 19:23 by wrstuden, last changed 2010-08-26 16:24 by BreamoreBoy.
| Messages (3) | |||
|---|---|---|---|
| msg60866 - (view) | Author: Bill Studenmund (wrstuden) | Date: 2006-01-06 19:23 | |
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. |
|||
| msg60867 - (view) | Author: Georg Brandl (georg.brandl) * ![]() |
Date: 2006-01-06 19:33 | |
Logged In: YES user_id=1188172 The PyDict_GetAttrString issue is corrected in the current devel docs. No clue about the other. |
|||
| msg60868 - (view) | Author: Bill Studenmund (wrstuden) | Date: 2006-01-06 22:48 | |
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? |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2010-08-26 16:24:30 | BreamoreBoy | set | assignee: georg.brandl -> docs@python nosy: + docs@python |
| 2009-04-22 14:35:57 | ajaksu2 | set | keywords: + easy |
| 2009-03-20 23:51:12 | ajaksu2 | set | nosy:
+ georg.brandl versions: + Python 2.6 assignee: georg.brandl components: + Documentation type: behavior stage: test needed |
| 2006-01-06 19:23:52 | wrstuden | create | |
