Using exec with embedded python interpreter 3.7

Peter Otten __peter__ at web.de
Sun Sep 1 15:26:37 EDT 2019


Eko palypse wrote:

> I've already sent this through mail yesterday but it doesn't appear here,
> maybe because of the help word in the content. Please execute in case it
> appears a second time.
> 
> 
> Hello,
> I'm creating a notepad++ plugin which hosts an embedded python interpreter
> by using cffi to build the dll. So far so good. One obstacle I've found is
> that I'm not able to use exec(help(object)) in order to get the wanted
> info from the object.
> 
> The error I get is:
> 
> Traceback (most recent call last):
>   File "<init code for 'Python3Script'>", line 131, in run_code
>   File "<string>", line 1, in <module>
>   File "D:\...\Python\Python37_64\Lib\_sitebuiltins.py", line 103, in
>   __call__
>     return pydoc.help(*args, **kwds)
>   File "D:\...\Python\Python37_64\Lib\pydoc.py", line 1895, in __call__
>     self.help(request)
>   File "D:\...\Python\Python37_64\Lib\pydoc.py", line 1954, in help
>     else: doc(request, 'Help on %s:', output=self._output)
>   File "D:\...\Python\Python37_64\Lib\pydoc.py", line 1674, in doc
>     pager(render_doc(thing, title, forceload))
>   File "D:\...\Python\Python37_64\Lib\pydoc.py", line 1451, in pager
>     pager(text)
>   File "D:\...\Python\Python37_64\Lib\pydoc.py", line 1576, in plainpager
>     sys.stdout.write(plain(_escape_stdout(text)))
>   File "D:\...\Python\Python37_64\Lib\pydoc.py", line 1528, in
>   _escape_stdout
>     return text.encode(encoding, 'backslashreplace').decode(encoding)
> TypeError: encode() argument 1 must be str, not method

The traceback suggests that sys.stdout was replaced with a custom object 
that has a method stdout.encoding() rather than the expected stdout.encoding  
attribute of type str.

> If I encase the object with quotes then I do get the info that no
> documentation is found for that object.
> 
> 1. It doesn't feel right to encase the object with quotes. I don't have to
> do this using the standard python interpreter shell. What did I miss?
> 
> 2. If it is needed to use the encased way, why don't it show the help
> info? The object class contains the module, class and functions doc
> strings, what did I miss here?
> 
> Thank you
> Eren





More information about the Python-list mailing list