X Tutup
The Wayback Machine - https://web.archive.org/web/20241214213255/https://github.com/python/cpython/issues/42771
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example in section 5.3 "Pure Embedding" doesn't work. #42771

Open
wrstuden mannequin opened this issue Jan 6, 2006 · 8 comments
Open

Example in section 5.3 "Pure Embedding" doesn't work. #42771

wrstuden mannequin opened this issue Jan 6, 2006 · 8 comments
Labels
3.10 only security fixes docs Documentation in the Doc dir extension-modules C modules in the Modules dir type-bug An unexpected behavior, bug, or error

Comments

@wrstuden
Copy link
Mannequin

wrstuden mannequin commented Jan 6, 2006

BPO 1398781
Nosy @birkenfeld, @birkenfeld, @vstinner

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields:

assignee = None
closed_at = None
created_at = <Date 2006-01-06.19:23:52.000>
labels = ['extension-modules', 'type-bug', '3.10', 'docs']
title = 'Example in section 5.3 "Pure Embedding" doesn\'t work.'
updated_at = <Date 2020-12-29.04:39:25.362>
user = 'https://bugs.python.org/wrstuden'

bugs.python.org fields:

activity = <Date 2020-12-29.04:39:25.362>
actor = 'orsenthil'
assignee = 'docs@python'
closed = False
closed_date = None
closer = None
components = ['Documentation', 'Extension Modules']
creation = <Date 2006-01-06.19:23:52.000>
creator = 'wrstuden'
dependencies = []
files = []
hgrepos = ['261']
issue_num = 1398781
keywords = []
message_count = 7.0
messages = ['60866', '60867', '60868', '182510', '212842', '221302', '348609']
nosy_count = 7.0
nosy_names = ['georg.brandl', 'georg.brandl', 'vstinner', 'wrstuden', 'docs@python', 'Ramchandra Apte', 'fkochem', 'jhao']
pr_nums = []
priority = 'normal'
resolution = None
stage = 'test needed'
status = 'open'
superseder = None
type = 'behavior'
url = 'https://bugs.python.org/issue1398781'
versions = ['Python 3.10']

@wrstuden
Copy link
Mannequin Author

wrstuden mannequin commented Jan 6, 2006

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.

@wrstuden wrstuden mannequin added extension-modules C modules in the Modules dir labels Jan 6, 2006
@birkenfeld
Copy link
Member

Logged In: YES
user_id=1188172

The PyDict_GetAttrString issue is corrected in the current
devel docs.

No clue about the other.

@wrstuden
Copy link
Mannequin Author

wrstuden mannequin commented Jan 6, 2006

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?

@devdanzin devdanzin mannequin added the docs Documentation in the Doc dir label Mar 20, 2009
@devdanzin devdanzin mannequin assigned birkenfeld Mar 20, 2009
@devdanzin devdanzin mannequin added type-bug An unexpected behavior, bug, or error docs Documentation in the Doc dir labels Mar 20, 2009
@devdanzin devdanzin mannequin assigned birkenfeld Mar 20, 2009
@devdanzin devdanzin mannequin added the type-bug An unexpected behavior, bug, or error label Mar 20, 2009
@devdanzin devdanzin mannequin added easy labels Apr 22, 2009
@BreamoreBoy BreamoreBoy mannequin assigned docspython and unassigned birkenfeld Aug 26, 2010
@RamchandraApte
Copy link
Mannequin

RamchandraApte mannequin commented Feb 20, 2013

Is this still valid?

@fkochem
Copy link
Mannequin

fkochem mannequin commented Mar 6, 2014

I just fell over the PYTHONPATH='' bit aswell. So yes, this is still valid.

@jhao
Copy link
Mannequin

jhao mannequin commented Jun 22, 2014

I have updated the example in the doc. This default behavior is introduced because of security reason as detailed in http://bugs.python.org/issue5753

@vstinner
Copy link
Member

This issue is 13 years old, inactive for 5 years, has a patch: it's far from being "newcomer friendly", I remove the "Easy" label.

@orsenthil orsenthil added 3.10 only security fixes and removed easy labels Dec 29, 2020
@ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
@slateny
Copy link
Contributor

slateny commented Jun 13, 2022

The earliest link to the original issue I could find is this, which has a section matching the title, and the example in that does seem to correspond to the modern link here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.10 only security fixes docs Documentation in the Doc dir extension-modules C modules in the Modules dir type-bug An unexpected behavior, bug, or error
Projects
None yet
Development

No branches or pull requests

4 participants
X Tutup