unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* python mode shell and unicode
@ 2010-03-26 15:35 Max Arnold
  2010-03-27 17:48 ` Andreas Röhler
  0 siblings, 1 reply; 10+ messages in thread
From: Max Arnold @ 2010-03-26 15:35 UTC (permalink / raw)
  To: help-gnu-emacs

Hi all!

My python-shell invoked via C-c C-c from python buffer can not print unicode characters (emits
UnicodeEncodeError) and sys.stdout.encoding is empty. System wide LANG set to "ru_RU.UTF-8" and
os.environ.get('LANG') in python shell confirms this.

When python-shell invoked manually (M-x python-shell) there is no encoding issues. Any ideas?

Cheers, Max




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-26 15:35 python mode shell and unicode Max Arnold
@ 2010-03-27 17:48 ` Andreas Röhler
  2010-03-28  2:47   ` Max Arnold
  0 siblings, 1 reply; 10+ messages in thread
From: Andreas Röhler @ 2010-03-27 17:48 UTC (permalink / raw)
  To: help-gnu-emacs

Max Arnold wrote:
> Hi all!
> 
> My python-shell invoked via C-c C-c from python buffer can not print unicode characters (emits
> UnicodeEncodeError) and sys.stdout.encoding is empty. System wide LANG set to "ru_RU.UTF-8" and
> os.environ.get('LANG') in python shell confirms this.
> 
> When python-shell invoked manually (M-x python-shell) there is no encoding issues. Any ideas?
> 
> Cheers, Max
> 
> 
> 


C-c C-c is bound here to

(python-send-buffer)

Send the current buffer to the inferior Python process.

What you get from

C-h v buffer-file-coding-system?


Andreas

--
https://code.launchpad.net/~a-roehler/python-mode
https://code.launchpad.net/s-x-emacs-werkstatt/





^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-27 17:48 ` Andreas Röhler
@ 2010-03-28  2:47   ` Max Arnold
  2010-03-28  7:25     ` Andreas Röhler
  0 siblings, 1 reply; 10+ messages in thread
From: Max Arnold @ 2010-03-28  2:47 UTC (permalink / raw)
  To: help-gnu-emacs

On Sat, Mar 27, 2010 at 06:48:00PM +0100, Andreas Röhler wrote:
> > My python-shell invoked via C-c C-c from python buffer can not print unicode characters (emits
> > UnicodeEncodeError) and sys.stdout.encoding is empty. System wide LANG set to "ru_RU.UTF-8" and
> > os.environ.get('LANG') in python shell confirms this.
> >
> > When python-shell invoked manually (M-x python-shell) there is no encoding issues. Any ideas?
> >
> What you get from
> C-h v buffer-file-coding-system?

---
buffer-file-coding-system is a variable defined in `C source code'.
Its value is utf-8-unix
Local in buffer test1.py; global value is utf-8-unix
...
It does not apply to sending output to subprocesses, however.
---

Python module contains encoding specification # -*- coding: utf-8 -*- at the beginning.
Emacs version is 23.1.




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-28  2:47   ` Max Arnold
@ 2010-03-28  7:25     ` Andreas Röhler
  2010-03-28 13:08       ` Max Arnold
  0 siblings, 1 reply; 10+ messages in thread
From: Andreas Röhler @ 2010-03-28  7:25 UTC (permalink / raw)
  To: help-gnu-emacs; +Cc: python-mode

Max Arnold wrote:
> On Sat, Mar 27, 2010 at 06:48:00PM +0100, Andreas Röhler wrote:
>>> My python-shell invoked via C-c C-c from python buffer can not print unicode characters (emits
>>> UnicodeEncodeError) and sys.stdout.encoding is empty. System wide LANG set to "ru_RU.UTF-8" and
>>> os.environ.get('LANG') in python shell confirms this.
>>>
>>> When python-shell invoked manually (M-x python-shell) there is no encoding issues. Any ideas?
>>>
>> What you get from
>> C-h v buffer-file-coding-system?
> 
> ---
> buffer-file-coding-system is a variable defined in `C source code'.
> Its value is utf-8-unix
> Local in buffer test1.py; global value is utf-8-unix
> ...
> It does not apply to sending output to subprocesses, however.
> ---
> 
> Python module contains encoding specification # -*- coding: utf-8 -*- at the beginning.
> Emacs version is 23.1.
> 
> 
> 

Hmm, see inside `python-send-region'

  ;; Fixme: Write a `coding' header to the temp file if the region is
  ;; non-ASCII.

Maybe that indicates the cause?

You could try `py-execute-file' from python-mode.el

CC to mailing list there.


Andreas

--
https://code.launchpad.net/~a-roehler/python-mode
https://code.launchpad.net/s-x-emacs-werkstatt/



_______________________________________________
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-28  7:25     ` Andreas Röhler
@ 2010-03-28 13:08       ` Max Arnold
  2010-03-28 14:56         ` Andreas Röhler
  0 siblings, 1 reply; 10+ messages in thread
From: Max Arnold @ 2010-03-28 13:08 UTC (permalink / raw)
  To: help-gnu-emacs

On Sun, Mar 28, 2010 at 09:25:02AM +0200, Andreas Röhler wrote:
> Hmm, see inside `python-send-region'
> 
>   ;; Fixme: Write a `coding' header to the temp file if the region is
>   ;; non-ASCII.
> 
> Maybe that indicates the cause?

I think this is unrelated to the issue because my python code contains no
unicode characters; they are received from parsed web page and then printed
to stdout. The problem is with python process spawned by Emacs - its stdout
encoding is not specified (sys.stdout.encoding is None).

Maybe this is a python feature: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415968

But then I do not understand why manually invoked pyton-shell handles unicode
characters just fine...

> You could try `py-execute-file' from python-mode.el

Sorry, didn't mentioned that I use python.el shipped with emacs. How to disable
built-in one and enable python-mode.el?  How to invoke py-execute-file from
M-x prompt?

BTW, print u'\xA9' is a nice test for this issue.

Cheers, Max




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-28 13:08       ` Max Arnold
@ 2010-03-28 14:56         ` Andreas Röhler
  2010-03-28 16:37           ` Max Arnold
  0 siblings, 1 reply; 10+ messages in thread
From: Andreas Röhler @ 2010-03-28 14:56 UTC (permalink / raw)
  To: help-gnu-emacs; +Cc: python-mode

Max Arnold wrote:
> On Sun, Mar 28, 2010 at 09:25:02AM +0200, Andreas Röhler wrote:
>> Hmm, see inside `python-send-region'
>>
>>   ;; Fixme: Write a `coding' header to the temp file if the region is
>>   ;; non-ASCII.
>>
>> Maybe that indicates the cause?
> 
> I think this is unrelated to the issue because my python code contains no
> unicode characters; they are received from parsed web page and then printed
> to stdout. The problem is with python process spawned by Emacs - its stdout
> encoding is not specified (sys.stdout.encoding is None).
> 
> Maybe this is a python feature: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415968
> 
> But then I do not understand why manually invoked pyton-shell handles unicode
> characters just fine...

Looks like your problem is rather on the python than the emacs side.

If I change the function in the bugreport given above into

def output(s):
    # print s.decode('utf-8')
    print s

redirecting into FILE with > works


> 
>> You could try `py-execute-file' from python-mode.el
> 
> Sorry, didn't mentioned that I use python.el shipped with emacs. How to disable
> built-in one and enable python-mode.el? 

Download it here

http://launchpad.net/python-mode/trunk/5.1.0/+download/python-mode.el

and get it loaded

 How to invoke py-execute-file from
> M-x prompt?

Just

M-x py-execute-file

should do it

Andreas

> 
> BTW, print u'\xA9' is a nice test for this issue.
> 
> Cheers, Max
> 
> 
> 

_______________________________________________
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-28 16:37           ` Max Arnold
@ 2010-03-28 16:34             ` Andreas Röhler
  2010-03-28 17:58               ` Max Arnold
  0 siblings, 1 reply; 10+ messages in thread
From: Andreas Röhler @ 2010-03-28 16:34 UTC (permalink / raw)
  To: help-gnu-emacs; +Cc: python-mode

Max Arnold wrote:
> On Sun, Mar 28, 2010 at 04:56:49PM +0200, Andreas Röhler wrote:
>> Looks like your problem is rather on the python than the emacs side.
> 
>> Download it here
>> http://launchpad.net/python-mode/trunk/5.1.0/+download/python-mode.el
>>
>> M-x py-execute-file
> 
> Ok, I placed (require 'python-mode) to init.el and it seems to be activated
> (autoloading didn't worked for me). But M-x shows no available completions
> for py-execute-file:
> 
> Possible completions are:
> py-electric-backspace                  py-electric-colon
> py-electric-delete                     py-end-of-def-or-class
> py-execute-buffer                      py-execute-def-or-class
> py-execute-import-or-reload            py-execute-region
> py-execute-string
> 
> Although C-h f py-execute-file shows it and says it is defined in python-mode.el.
> 
> 
> Next, quick test with print u'\xA9':
> 
> 1. Invoke python shell manually:
> 
> M-x py-shell
>>>> print u'\xA9'
> ©
> 
> 
> 2. Create new buffer containing the same print command, switch it to python-mode
> and use py-execute-buffer:
> 
>>>> ## working on region in file /usr/tmp/python-9773IlV.py...
> ©
> 

So that's what it should do(?)

> 
> 3. Close python shell (opened at step 1) and invoke py-execute-buffer again:
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 0: ordinal not in range(128)
> 
> 
> Is this really a python problem?  I think there is a difference in how Emacs spawns python
> process in each case.
> 
> 
> 

Hmm, yes, get the same error.
However, if I re-start ipython-shell parallel

it works again

In [11]: ## working on region in file /usr/tmp/python-3766xFD.py...
©


Maybe just start a python-shell to have a work-around?

Sorry, I'm not able to dive into now.

It may help, if you make a bug-report, having it noticed at least here:

https://bugs.launchpad.net/python-mode

Thanks

Andreas








^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-28 14:56         ` Andreas Röhler
@ 2010-03-28 16:37           ` Max Arnold
  2010-03-28 16:34             ` Andreas Röhler
  0 siblings, 1 reply; 10+ messages in thread
From: Max Arnold @ 2010-03-28 16:37 UTC (permalink / raw)
  To: help-gnu-emacs

On Sun, Mar 28, 2010 at 04:56:49PM +0200, Andreas Röhler wrote:
> Looks like your problem is rather on the python than the emacs side.

> Download it here
> http://launchpad.net/python-mode/trunk/5.1.0/+download/python-mode.el
> 
> M-x py-execute-file

Ok, I placed (require 'python-mode) to init.el and it seems to be activated
(autoloading didn't worked for me). But M-x shows no available completions
for py-execute-file:

Possible completions are:
py-electric-backspace                  py-electric-colon
py-electric-delete                     py-end-of-def-or-class
py-execute-buffer                      py-execute-def-or-class
py-execute-import-or-reload            py-execute-region
py-execute-string

Although C-h f py-execute-file shows it and says it is defined in python-mode.el.


Next, quick test with print u'\xA9':

1. Invoke python shell manually:

M-x py-shell
>>> print u'\xA9'
©
>>>


2. Create new buffer containing the same print command, switch it to python-mode
and use py-execute-buffer:

>>> ## working on region in file /usr/tmp/python-9773IlV.py...
©
>>>


3. Close python shell (opened at step 1) and invoke py-execute-buffer again:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 0: ordinal not in range(128)


Is this really a python problem?  I think there is a difference in how Emacs spawns python
process in each case.




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-28 17:58               ` Max Arnold
@ 2010-03-28 17:28                 ` Andreas Röhler
  0 siblings, 0 replies; 10+ messages in thread
From: Andreas Röhler @ 2010-03-28 17:28 UTC (permalink / raw)
  To: help-gnu-emacs; +Cc: python-mode

Max Arnold wrote:
> On Sun, Mar 28, 2010 at 06:34:06PM +0200, Andreas Röhler wrote:
>>> On Sun, Mar 28, 2010 at 04:56:49PM +0200, Andreas Röhler wrote:
>>>> Looks like your problem is rather on the python than the emacs side.
>>>> Download it here
>>>> http://launchpad.net/python-mode/trunk/5.1.0/+download/python-mode.el
>>>>
>>>> M-x py-execute-file
>>> Ok, I placed (require 'python-mode) to init.el and it seems to be activated
>>> (autoloading didn't worked for me). But M-x shows no available completions
>>> for py-execute-file:
>>>
>>> Possible completions are:
>>> py-electric-backspace                  py-electric-colon
>>> py-electric-delete                     py-end-of-def-or-class
>>> py-execute-buffer                      py-execute-def-or-class
>>> py-execute-import-or-reload            py-execute-region
>>> py-execute-string
>>>
>>> Although C-h f py-execute-file shows it and says it is defined in python-mode.el.
>>>
>>>
>>> Next, quick test with print u'\xA9':
>>>
>>> 1. Invoke python shell manually:
>>>
>>> M-x py-shell
>>>>>> print u'\xA9'
>>> ©
>>>
>>>
>>> 2. Create new buffer containing the same print command, switch it to python-mode
>>> and use py-execute-buffer:
>>>
>>>>>> ## working on region in file /usr/tmp/python-9773IlV.py...
>>> ©
>>>
>> So that's what it should do(?)
> 
> 
> Yes, (1) and (2) is expected behaviour, 0xA9 is the UTF-8 code for copyright symbol (C).
> 
>>> 3. Close python shell (opened at step 1) and invoke py-execute-buffer again:
>>>
>>> Traceback (most recent call last):
>>>   File "<stdin>", line 1, in <module>
>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 0: ordinal not in range(128)
>>>
>>>
>>> Is this really a python problem?  I think there is a difference in how Emacs spawns python
>>> process in each case.
>>>
>>>
>> Hmm, yes, get the same error.
>> However, if I re-start ipython-shell parallel
>>
>> it works again
>>
>> In [11]: ## working on region in file /usr/tmp/python-3766xFD.py...
>> ©
>>
>>
>> Maybe just start a python-shell to have a work-around?
> 
> Initially I discovered this problem using python.el. It spawns new python
> process upon C-c C-c even if there is existing one (looks like it launches
> one process per buffer). So this workaround applicable only for python-mode.el
> 
> 
>> Sorry, I'm not able to dive into now.
>>
>> It may help, if you make a bug-report, having it noticed at least here:
>>
>> https://bugs.launchpad.net/python-mode
> 
> Ok, I'll do this.  Should I do the same for python.el somewhere?
> 
> 
> 

Yes, thanks

M-x report-emacs-bug

will provide the destination.

Andreas
_______________________________________________
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: python mode shell and unicode
  2010-03-28 16:34             ` Andreas Röhler
@ 2010-03-28 17:58               ` Max Arnold
  2010-03-28 17:28                 ` Andreas Röhler
  0 siblings, 1 reply; 10+ messages in thread
From: Max Arnold @ 2010-03-28 17:58 UTC (permalink / raw)
  To: help-gnu-emacs

On Sun, Mar 28, 2010 at 06:34:06PM +0200, Andreas Röhler wrote:
> > On Sun, Mar 28, 2010 at 04:56:49PM +0200, Andreas Röhler wrote:
> >> Looks like your problem is rather on the python than the emacs side.
> > 
> >> Download it here
> >> http://launchpad.net/python-mode/trunk/5.1.0/+download/python-mode.el
> >>
> >> M-x py-execute-file
> > 
> > Ok, I placed (require 'python-mode) to init.el and it seems to be activated
> > (autoloading didn't worked for me). But M-x shows no available completions
> > for py-execute-file:
> > 
> > Possible completions are:
> > py-electric-backspace                  py-electric-colon
> > py-electric-delete                     py-end-of-def-or-class
> > py-execute-buffer                      py-execute-def-or-class
> > py-execute-import-or-reload            py-execute-region
> > py-execute-string
> > 
> > Although C-h f py-execute-file shows it and says it is defined in python-mode.el.
> > 
> > 
> > Next, quick test with print u'\xA9':
> > 
> > 1. Invoke python shell manually:
> > 
> > M-x py-shell
> >>>> print u'\xA9'
> > ©
> > 
> > 
> > 2. Create new buffer containing the same print command, switch it to python-mode
> > and use py-execute-buffer:
> > 
> >>>> ## working on region in file /usr/tmp/python-9773IlV.py...
> > ©
> > 
> 
> So that's what it should do(?)


Yes, (1) and (2) is expected behaviour, 0xA9 is the UTF-8 code for copyright symbol (C).

> > 
> > 3. Close python shell (opened at step 1) and invoke py-execute-buffer again:
> > 
> > Traceback (most recent call last):
> >   File "<stdin>", line 1, in <module>
> > UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 0: ordinal not in range(128)
> > 
> > 
> > Is this really a python problem?  I think there is a difference in how Emacs spawns python
> > process in each case.
> > 
> > 
> 
> Hmm, yes, get the same error.
> However, if I re-start ipython-shell parallel
> 
> it works again
> 
> In [11]: ## working on region in file /usr/tmp/python-3766xFD.py...
> ©
> 
> 
> Maybe just start a python-shell to have a work-around?

Initially I discovered this problem using python.el. It spawns new python
process upon C-c C-c even if there is existing one (looks like it launches
one process per buffer). So this workaround applicable only for python-mode.el


> Sorry, I'm not able to dive into now.
> 
> It may help, if you make a bug-report, having it noticed at least here:
> 
> https://bugs.launchpad.net/python-mode

Ok, I'll do this.  Should I do the same for python.el somewhere?




^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-03-28 17:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-26 15:35 python mode shell and unicode Max Arnold
2010-03-27 17:48 ` Andreas Röhler
2010-03-28  2:47   ` Max Arnold
2010-03-28  7:25     ` Andreas Röhler
2010-03-28 13:08       ` Max Arnold
2010-03-28 14:56         ` Andreas Röhler
2010-03-28 16:37           ` Max Arnold
2010-03-28 16:34             ` Andreas Röhler
2010-03-28 17:58               ` Max Arnold
2010-03-28 17:28                 ` Andreas Röhler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).