emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Mixing Python2 and Python3 blocks in one file
@ 2016-05-08  8:31 Karl Voit
  2016-05-08 15:13 ` Karl Voit
  2016-05-17 14:24 ` William Henney
  0 siblings, 2 replies; 22+ messages in thread
From: Karl Voit @ 2016-05-08  8:31 UTC (permalink / raw)
  To: emacs-orgmode

Hi!

Python2 and Python3 are two different languages. Unfortunately,
Org-mode only uses ~#+BEGIN_SRC python~ for both and uses
python-shell-interpreter to choose/switch the compiler.

Shouldn't Org-mode introduce ~#+BEGIN_SRC python2~ and ~#+BEGIN_SRC
python3~ to solve this issue in a clean way?

~#+BEGIN_SRC python~ can still default to python2.


I only found those sources/solutions:

http://thread.gmane.org/gmane.emacs.orgmode/47867
... file-variables to choose interpretor

http://thread.gmane.org/gmane.emacs.orgmode/47867
... workaround with #+srcname (I don't get yet)


-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-08  8:31 Mixing Python2 and Python3 blocks in one file Karl Voit
@ 2016-05-08 15:13 ` Karl Voit
  2016-05-17 14:24 ` William Henney
  1 sibling, 0 replies; 22+ messages in thread
From: Karl Voit @ 2016-05-08 15:13 UTC (permalink / raw)
  To: emacs-orgmode

* Karl Voit <devnull@Karl-Voit.at> wrote:
> Hi!
>
> Python2 and Python3 are two different languages. Unfortunately,
> Org-mode only uses ~#+BEGIN_SRC python~ for both and uses
> python-shell-interpreter to choose/switch the compiler.
>
> Shouldn't Org-mode introduce ~#+BEGIN_SRC python2~ and ~#+BEGIN_SRC
> python3~ to solve this issue in a clean way?
>
> ~#+BEGIN_SRC python~ can still default to python2.
>
>
> I only found those sources/solutions:

Correct links:

http://article.gmane.org/gmane.emacs.orgmode/47878
> ... file-variables to choose interpretor

http://article.gmane.org/gmane.emacs.orgmode/47955
> ... workaround with #+srcname (I don't get yet)

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-08  8:31 Mixing Python2 and Python3 blocks in one file Karl Voit
  2016-05-08 15:13 ` Karl Voit
@ 2016-05-17 14:24 ` William Henney
  2016-05-17 14:54   ` Karl Voit
  1 sibling, 1 reply; 22+ messages in thread
From: William Henney @ 2016-05-17 14:24 UTC (permalink / raw)
  To: Karl Voit; +Cc: emacs-org

[-- Attachment #1: Type: text/plain, Size: 2044 bytes --]

Hi Karl

On Sun, May 8, 2016 at 3:31 AM, Karl Voit <devnull@karl-voit.at> wrote:

Python2 and Python3 are two different languages. Unfortunately,
> Org-mode only uses ~#+BEGIN_SRC python~ for both and uses
> python-shell-interpreter to choose/switch the compiler.
>
> Shouldn't Org-mode introduce ~#+BEGIN_SRC python2~ and ~#+BEGIN_SRC
> python3~ to solve this issue in a clean way?
>
> ~#+BEGIN_SRC python~ can still default to python2.
>
>
>
You can use the :python header argument to the source block, which allows
you to specify the path to the python interpreter:


————————— BEGIN EXAMPLE ————————

* Default python version
#+name: check-python-version
#+BEGIN_SRC python
import sys
return sys.version
#+END_SRC

#+RESULTS: check-python-version
: 3.4.4 |Anaconda 2.5.0 (x86_64)| (default, Jan  9 2016, 17:30:09)
: [GCC 4.2.1 (Apple Inc. build 5577)]

This is the control experiment.

* Custom python version
#+BEGIN_SRC python :python /Users/will/anaconda/envs/py27/bin/python
import sys
return sys.version
#+END_SRC

#+RESULTS:
: 2.7.11 |Continuum Analytics, Inc.| (default, Dec  6 2015, 18:57:58)
: [GCC 4.2.1 (Apple Inc. build 5577)]

—————————  END EXAMPLE  ————————

Also see original discussion at

https://lists.gnu.org/archive/html/emacs-orgmode/2014-04/msg01042.html

Will



> I only found those sources/solutions:
>
> http://thread.gmane.org/gmane.emacs.orgmode/47867
> ... file-variables to choose interpretor
>
> http://thread.gmane.org/gmane.emacs.orgmode/47867
> ... workaround with #+srcname (I don't get yet)
>
>
> --
> mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
>        > get Memacs from https://github.com/novoid/Memacs <
>
> https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on
> github
>
>
>


-- 

  Dr William Henney, Instituto de Radioastronomía y Astrofísica,
  Universidad Nacional Autónoma de México, Campus Morelia

[-- Attachment #2: Type: text/html, Size: 3723 bytes --]

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-17 14:24 ` William Henney
@ 2016-05-17 14:54   ` Karl Voit
  2016-05-17 15:37     ` John Kitchin
  2016-05-18  1:19     ` William Henney
  0 siblings, 2 replies; 22+ messages in thread
From: Karl Voit @ 2016-05-17 14:54 UTC (permalink / raw)
  To: emacs-orgmode

Hi William

* William Henney <whenney@gmail.com> wrote:
>
> On Sun, May 8, 2016 at 3:31 AM, Karl Voit <devnull@karl-voit.at> wrote:
>
> Python2 and Python3 are two different languages. Unfortunately,
>> Org-mode only uses ~#+BEGIN_SRC python~ for both and uses
>> python-shell-interpreter to choose/switch the compiler.
>>
>> Shouldn't Org-mode introduce ~#+BEGIN_SRC python2~ and ~#+BEGIN_SRC
>> python3~ to solve this issue in a clean way?
>>
>> ~#+BEGIN_SRC python~ can still default to python2.
>>
> You can use the :python header argument to the source block, which allows
> you to specify the path to the python interpreter:
>
> #+BEGIN_SRC python :python /Users/will/anaconda/envs/py27/bin/python

Cool, I did not find this parameter yet.

Is this undocumented? http://orgmode.org/org.html does not contain
the string ":python:" and
http://orgmode.org/org.html#Language_002dspecific-header-arguments
also does not mention this parameter.

> Also see original discussion at
> https://lists.gnu.org/archive/html/emacs-orgmode/2014-04/msg01042.html

Most interesting to me, thank you.

With the parameter above as a workaround, I can accomplish the
things I want to do for now. However, I still do think that Python2
and Python3 as different languages demand different block
identifiers.

#+BEGIN_SRC python -> defaults to the default python interpreter
#+BEGIN_SRC python2 -> uses Python2
#+BEGIN_SRC python3 -> uses Python3

Don't you think?

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-17 14:54   ` Karl Voit
@ 2016-05-17 15:37     ` John Kitchin
  2016-05-18  1:19     ` William Henney
  1 sibling, 0 replies; 22+ messages in thread
From: John Kitchin @ 2016-05-17 15:37 UTC (permalink / raw)
  To: Karl Voit; +Cc: emacs-orgmode

You can hack this to work:

#+BEGIN_SRC emacs-lisp
(defun org-babel-execute:python2 (body params)
  (let ((org-babel-python-command "/Users/jkitchin/Library/Enthought/Canopy_64bit/User/bin/python2"))
    (org-babel-execute:python body params)))

#+END_SRC


#+BEGIN_SRC python2
print 'Hello'
#+END_SRC
#+RESULTS:
: Hello


One issue though is no font-lock in the source block. I think it uses
the language to set the mode.

Karl Voit writes:

> Hi William
>
> * William Henney <whenney@gmail.com> wrote:
>>
>> On Sun, May 8, 2016 at 3:31 AM, Karl Voit <devnull@karl-voit.at> wrote:
>>
>> Python2 and Python3 are two different languages. Unfortunately,
>>> Org-mode only uses ~#+BEGIN_SRC python~ for both and uses
>>> python-shell-interpreter to choose/switch the compiler.
>>>
>>> Shouldn't Org-mode introduce ~#+BEGIN_SRC python2~ and ~#+BEGIN_SRC
>>> python3~ to solve this issue in a clean way?
>>>
>>> ~#+BEGIN_SRC python~ can still default to python2.
>>>
>> You can use the :python header argument to the source block, which allows
>> you to specify the path to the python interpreter:
>>
>> #+BEGIN_SRC python :python /Users/will/anaconda/envs/py27/bin/python
>
> Cool, I did not find this parameter yet.
>
> Is this undocumented? http://orgmode.org/org.html does not contain
> the string ":python:" and
> http://orgmode.org/org.html#Language_002dspecific-header-arguments
> also does not mention this parameter.
>
>> Also see original discussion at
>> https://lists.gnu.org/archive/html/emacs-orgmode/2014-04/msg01042.html
>
> Most interesting to me, thank you.
>
> With the parameter above as a workaround, I can accomplish the
> things I want to do for now. However, I still do think that Python2
> and Python3 as different languages demand different block
> identifiers.
>
> #+BEGIN_SRC python -> defaults to the default python interpreter
> #+BEGIN_SRC python2 -> uses Python2
> #+BEGIN_SRC python3 -> uses Python3
>
> Don't you think?


--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-17 14:54   ` Karl Voit
  2016-05-17 15:37     ` John Kitchin
@ 2016-05-18  1:19     ` William Henney
  2016-05-18  3:42       ` Thomas S. Dye
                         ` (2 more replies)
  1 sibling, 3 replies; 22+ messages in thread
From: William Henney @ 2016-05-18  1:19 UTC (permalink / raw)
  To: Karl Voit; +Cc: emacs-org

[-- Attachment #1: Type: text/plain, Size: 2836 bytes --]

Hi Karl

On Tue, May 17, 2016 at 9:54 AM, Karl Voit <devnull@karl-voit.at> wrote:

> Hi William
>
> * William Henney <whenney@gmail.com> wrote:
> >
> > On Sun, May 8, 2016 at 3:31 AM, Karl Voit <devnull@karl-voit.at> wrote:
> >
> > Python2 and Python3 are two different languages. Unfortunately,
> >> Org-mode only uses ~#+BEGIN_SRC python~ for both and uses
> >> python-shell-interpreter to choose/switch the compiler.
> >>
> >> Shouldn't Org-mode introduce ~#+BEGIN_SRC python2~ and ~#+BEGIN_SRC
> >> python3~ to solve this issue in a clean way?
> >>
> >> ~#+BEGIN_SRC python~ can still default to python2.
> >>
> > You can use the :python header argument to the source block, which allows
> > you to specify the path to the python interpreter:
> >
> > #+BEGIN_SRC python :python /Users/will/anaconda/envs/py27/bin/python
>
> Cool, I did not find this parameter yet.
>
> Is this undocumented? http://orgmode.org/org.html does not contain
> the string ":python:" and
> http://orgmode.org/org.html#Language_002dspecific-header-arguments
> also does not mention this parameter.
>
>
It is documented at
http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-python.html

You are right that it would be better if the language-specific babel
documentation were better integrated in the general org info file.  But I
suppose nobody has been sufficiently motivated to do it yet


> > Also see original discussion at
> > https://lists.gnu.org/archive/html/emacs-orgmode/2014-04/msg01042.html
>
> Most interesting to me, thank you.
>
> With the parameter above as a workaround, I can accomplish the
> things I want to do for now. However, I still do think that Python2
> and Python3 as different languages demand different block
> identifiers.
>
> #+BEGIN_SRC python -> defaults to the default python interpreter
> #+BEGIN_SRC python2 -> uses Python2
> #+BEGIN_SRC python3 -> uses Python3
>
> Don't you think?
>
>
To be honest, I disagree that we need different block identifiers.  Python
is hardly the only language to have gone through multiple major versions,
and I don’t think a proliferation of org-babel languages is the answer.
What about C11 vs C99, etc?  I guess a good rule of thumb would be: do the
two versions use the same major mode in emacs?

Why is the :python parameter insufficient for your needs?  You can also use
it for different virtual environments

Cheers

Will



> --
> mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
>        > get Memacs from https://github.com/novoid/Memacs <
>
> https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on
> github
>
>
>


-- 

  Dr William Henney, Instituto de Radioastronomía y Astrofísica,
  Universidad Nacional Autónoma de México, Campus Morelia

[-- Attachment #2: Type: text/html, Size: 4844 bytes --]

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-18  1:19     ` William Henney
@ 2016-05-18  3:42       ` Thomas S. Dye
  2016-05-18  7:11         ` Karl Voit
  2016-05-18  7:10       ` Division of Org documentation: Org manual and Worg (was: Mixing Python2 and Python3 blocks in one file) Karl Voit
  2016-05-18 13:45       ` Mixing Python2 and Python3 blocks in one file Ken Mankoff
  2 siblings, 1 reply; 22+ messages in thread
From: Thomas S. Dye @ 2016-05-18  3:42 UTC (permalink / raw)
  To: William Henney; +Cc: Karl Voit, emacs-org


William Henney writes:
>> Cool, I did not find this parameter yet.
>>
>> Is this undocumented? http://orgmode.org/org.html does not contain
>> the string ":python:" and
>> http://orgmode.org/org.html#Language_002dspecific-header-arguments
>> also does not mention this parameter.
>>
>>
> It is documented at
> http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-python.html

As of a few hours ago, when I added it.  It probably wasn't there when
Karl looked.

All the best,
Tom

-- 
Thomas S. Dye
http://www.tsdye.com

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

* Division of Org documentation: Org manual and Worg (was: Mixing Python2 and Python3 blocks in one file)
  2016-05-18  1:19     ` William Henney
  2016-05-18  3:42       ` Thomas S. Dye
@ 2016-05-18  7:10       ` Karl Voit
  2016-05-18  8:10         ` Division of Org documentation: Org manual and Worg Daniele Pizzolli
  2016-05-18 13:45       ` Mixing Python2 and Python3 blocks in one file Ken Mankoff
  2 siblings, 1 reply; 22+ messages in thread
From: Karl Voit @ 2016-05-18  7:10 UTC (permalink / raw)
  To: emacs-orgmode

Good morning William,

* William Henney <whenney@gmail.com> wrote:
>
> On Tue, May 17, 2016 at 9:54 AM, Karl Voit <devnull@karl-voit.at> wrote:
>
>> * William Henney <whenney@gmail.com> wrote:
>> >
>> > #+BEGIN_SRC python :python /Users/will/anaconda/envs/py27/bin/python
>>
>> Is this undocumented? http://orgmode.org/org.html does not contain
>> the string ":python:" and
>> http://orgmode.org/org.html#Language_002dspecific-header-arguments
>> also does not mention this parameter.
>>
> It is documented at
> http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-python.html
>
> You are right that it would be better if the language-specific babel
> documentation were better integrated in the general org info file.  But I
> suppose nobody has been sufficiently motivated to do it yet

That brings me to an additional question I was asking myself a
couple of times: things like this, IMHO basic features, are
sometimes mentioned in Worg but not in the Org manual. Is there a
«rule» that I can follow so that I know where to look?

So far, I had to do full text search on both domains to find certain
keywords...

Thanks

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-18  3:42       ` Thomas S. Dye
@ 2016-05-18  7:11         ` Karl Voit
  0 siblings, 0 replies; 22+ messages in thread
From: Karl Voit @ 2016-05-18  7:11 UTC (permalink / raw)
  To: emacs-orgmode

* Thomas S. Dye <tsd@tsdye.com> wrote:
>
> William Henney writes:
>>
>> It is documented at
>> http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-python.html
>
> As of a few hours ago, when I added it.  It probably wasn't there when
> Karl looked.

Thank you very much Thomas!

I can not appreciate documentation improvements too much ;-)

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

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

* Re: Division of Org documentation: Org manual and Worg
  2016-05-18  7:10       ` Division of Org documentation: Org manual and Worg (was: Mixing Python2 and Python3 blocks in one file) Karl Voit
@ 2016-05-18  8:10         ` Daniele Pizzolli
  2016-05-18  9:03           ` Rasmus
  0 siblings, 1 reply; 22+ messages in thread
From: Daniele Pizzolli @ 2016-05-18  8:10 UTC (permalink / raw)
  To: emacs-orgmode

On Wed, May 18 2016, Karl Voit wrote:

> Good morning William,
>
> * William Henney <whenney@gmail.com> wrote:
>>
>> On Tue, May 17, 2016 at 9:54 AM, Karl Voit <devnull@karl-voit.at> wrote:
>>
>>> * William Henney <whenney@gmail.com> wrote:
>>> >
>>> > #+BEGIN_SRC python :python /Users/will/anaconda/envs/py27/bin/python
>>>
>>> Is this undocumented? http://orgmode.org/org.html does not contain
>>> the string ":python:" and
>>> http://orgmode.org/org.html#Language_002dspecific-header-arguments
>>> also does not mention this parameter.
>>>
>> It is documented at
>> http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-python.html
>>
>> You are right that it would be better if the language-specific babel
>> documentation were better integrated in the general org info file.  But I
>> suppose nobody has been sufficiently motivated to do it yet
>
> That brings me to an additional question I was asking myself a
> couple of times: things like this, IMHO basic features, are
> sometimes mentioned in Worg but not in the Org manual. Is there a
> «rule» that I can follow so that I know where to look?
>
> So far, I had to do full text search on both domains to find certain
> keywords...

Hello,

Me too, and this is really a problem when you try do unusual stuff.

I will share some problems and workaround for python in a new thread.

It would be nice to add them to the documentation, but I have not yet
figured out what is the appropriate way to send the patch!

Best,
Daniele

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

* Re: Division of Org documentation: Org manual and Worg
  2016-05-18  8:10         ` Division of Org documentation: Org manual and Worg Daniele Pizzolli
@ 2016-05-18  9:03           ` Rasmus
  2016-05-18 10:08             ` Daniele Pizzolli
  0 siblings, 1 reply; 22+ messages in thread
From: Rasmus @ 2016-05-18  9:03 UTC (permalink / raw)
  To: emacs-orgmode

Daniele Pizzolli <dan@toel.it> writes:

> It would be nice to add them to the documentation, but I have not yet
> figured out what is the appropriate way to send the patch!

/That/ information happens to be on Worg :)

       http://orgmode.org/worg/org-contribute.html

-- 
It was you, Jezebel, it was you

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

* Re: Division of Org documentation: Org manual and Worg
  2016-05-18  9:03           ` Rasmus
@ 2016-05-18 10:08             ` Daniele Pizzolli
  2016-05-18 10:18               ` Rasmus
  2016-05-18 10:18               ` Daniele Pizzolli
  0 siblings, 2 replies; 22+ messages in thread
From: Daniele Pizzolli @ 2016-05-18 10:08 UTC (permalink / raw)
  To: emacs-orgmode; +Cc: bzg

[-- Attachment #1: Type: text/plain, Size: 477 bytes --]

On Wed, May 18 2016, Rasmus  wrote:

> Daniele Pizzolli writes:
>
>> It would be nice to add them to the documentation, but I have not yet
>> figured out what is the appropriate way to send the patch!
>
> /That/ information happens to be on Worg :)
>
>        http://orgmode.org/worg/org-contribute.html

Thanks Rasmus,

So... here is the patch for worg about python and utf-8!  I skipped
the part related to the tables, since I do not have a clean
workaround.

Best,
Daniele


[-- Attachment #2: 0001-Add-caveats-about-uft-8-strings.patch --]
[-- Type: text/x-diff, Size: 2609 bytes --]

From 91941d90d26e1715447fecc255d7976c0895e75d Mon Sep 17 00:00:00 2001
From: Daniele Pizzolli <dan@toel.it>
Date: Wed, 18 May 2016 11:55:00 +0200
Subject: [PATCH 1/1] Add caveats about uft-8 strings

---
 org-contrib/babel/languages/ob-doc-python.org | 52 ++++++++++++++++++++++++++-
 1 file changed, 51 insertions(+), 1 deletion(-)

diff --git a/org-contrib/babel/languages/ob-doc-python.org b/org-contrib/babel/languages/ob-doc-python.org
index 968a8bc..e4619ed 100644
--- a/org-contrib/babel/languages/ob-doc-python.org
+++ b/org-contrib/babel/languages/ob-doc-python.org
@@ -25,7 +25,7 @@
   </div>
 #+end_html
 
-* Template Checklist [10/12] 					   :noexport:
+* Template Checklist [11/14] 					   :noexport:
   - [X] Revise #+TITLE:
   - [X] Indicate #+AUTHOR:
   - [X] Add #+EMAIL:
@@ -42,6 +42,8 @@
   - [ ] Describe [[Result%20Types][Result Types]]
   - [ ] Describe [[Other]] differences from supported languages
   - [X] Provide brief [[Examples%20of%20Use][Examples of Use]]
+  - [X] Add caveats about utf-8 in strings
+  - [ ] Add caveats about utf-8 in tables
 * Introduction
 Python is a high-level, readable, interpreted language which can be
 used for many common computing tasks.  It runs on most modern
@@ -242,3 +244,51 @@ return 'images/python-matplot-fig.png' # return filename to org-mode
 
 #+end_example
 [[file:images/python-matplot-fig.png]]
+
+* Caveats
+
+** passing utf-8 strings to python
+
+You need some care in order to pass utf-8 strings to python.
+
+#+begin_example
+#+NAME: unicode_str
+,#+BEGIN_EXAMPLE
+“this string is not ascii!”
+,#+END_EXAMPLE
+#+end_example
+
+#+begin_example
+#+NAME: error-in-passing-var
+#+BEGIN_SRC python :var data=unicode_str
+return data
+#+END_SRC
+#+end_example
+
+#+begin_example
+#+RESULTS: error-in-passing-var
+#+end_example
+
+Will produce no output and prints the following message in the buffer
+=*Org-Babel Error Output*=:
+
+#+BEGIN_EXAMPLE
+  File "<stdin>", line 3
+SyntaxError: Non-ASCII character '\xe2' in file <stdin> on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
+#+END_EXAMPLE
+
+** passing utf-8 strings to python with workaround
+
+A workaround is to use =:preamble= with wthe value =# -*- coding:utf-8 -*-=
+
+#+begin_example
+#+NAME: ok-in-passing-var
+#+BEGIN_SRC python :preamble "# -*- coding: utf-8 -*-" :var data=unicode_str
+return data
+#+END_SRC
+#+end_example
+
+#+begin_example
+#+RESULTS: ok-in-passing-var
+: “this string is not ascii!”
+#+end_example
-- 
2.1.4


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

* Re: Division of Org documentation: Org manual and Worg
  2016-05-18 10:08             ` Daniele Pizzolli
@ 2016-05-18 10:18               ` Rasmus
  2016-05-20 17:15                 ` Daniele Pizzolli
  2016-05-18 10:18               ` Daniele Pizzolli
  1 sibling, 1 reply; 22+ messages in thread
From: Rasmus @ 2016-05-18 10:18 UTC (permalink / raw)
  To: emacs-orgmode

Hi Daniele,

> So... here is the patch for worg about python and utf-8!  I skipped
> the part related to the tables, since I do not have a clean
> workaround.

Thanks for contributing to Worg!

For Worg you just need to have your ssh key added.  Then you can push
changes yourself.

        http://orgmode.org/worg/worg-about.html

You can email your public ssh key to e.g. Bastien (bzg at gnu dot org).

Rasmus

-- 
You people at the NSA are becoming my new best friends!

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

* Re: Division of Org documentation: Org manual and Worg
  2016-05-18 10:08             ` Daniele Pizzolli
  2016-05-18 10:18               ` Rasmus
@ 2016-05-18 10:18               ` Daniele Pizzolli
  1 sibling, 0 replies; 22+ messages in thread
From: Daniele Pizzolli @ 2016-05-18 10:18 UTC (permalink / raw)
  Cc: bzg, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 608 bytes --]

On Wed, May 18 2016, Daniele Pizzolli wrote:

> On Wed, May 18 2016, Rasmus  wrote:
>
>> Daniele Pizzolli writes:
>>
>>> It would be nice to add them to the documentation, but I have not yet
>>> figured out what is the appropriate way to send the patch!
>>
>> /That/ information happens to be on Worg :)
>>
>>        http://orgmode.org/worg/org-contribute.html
>
> Thanks Rasmus,
>
> So... here is the patch for worg about python and utf-8!  I skipped
> the part related to the tables, since I do not have a clean
> workaround.

Oops, I correct a couple of typos with this one.
Sorry for the noise.
Daniele


[-- Attachment #2: 0001-Add-caveats-about-uft-8-strings.patch --]
[-- Type: text/x-diff, Size: 2608 bytes --]

From e885c2d7654dcf78cf37e5fd5b1e104545ecbd2f Mon Sep 17 00:00:00 2001
From: Daniele Pizzolli <dan@toel.it>
Date: Wed, 18 May 2016 11:55:00 +0200
Subject: [PATCH 1/1] Add caveats about uft-8 strings

---
 org-contrib/babel/languages/ob-doc-python.org | 52 ++++++++++++++++++++++++++-
 1 file changed, 51 insertions(+), 1 deletion(-)

diff --git a/org-contrib/babel/languages/ob-doc-python.org b/org-contrib/babel/languages/ob-doc-python.org
index 968a8bc..8acfbff 100644
--- a/org-contrib/babel/languages/ob-doc-python.org
+++ b/org-contrib/babel/languages/ob-doc-python.org
@@ -25,7 +25,7 @@
   </div>
 #+end_html
 
-* Template Checklist [10/12] 					   :noexport:
+* Template Checklist [11/14] 					   :noexport:
   - [X] Revise #+TITLE:
   - [X] Indicate #+AUTHOR:
   - [X] Add #+EMAIL:
@@ -42,6 +42,8 @@
   - [ ] Describe [[Result%20Types][Result Types]]
   - [ ] Describe [[Other]] differences from supported languages
   - [X] Provide brief [[Examples%20of%20Use][Examples of Use]]
+  - [X] Add caveats about utf-8 in strings
+  - [ ] Add caveats about utf-8 in tables
 * Introduction
 Python is a high-level, readable, interpreted language which can be
 used for many common computing tasks.  It runs on most modern
@@ -242,3 +244,51 @@ return 'images/python-matplot-fig.png' # return filename to org-mode
 
 #+end_example
 [[file:images/python-matplot-fig.png]]
+
+* Caveats
+
+You need some care in order to pass utf-8 strings to python.
+
+** passing utf-8 strings to python
+
+#+begin_example
+#+NAME: unicode_str
+,#+BEGIN_EXAMPLE
+“this string is not ascii!”
+,#+END_EXAMPLE
+#+end_example
+
+#+begin_example
+#+NAME: error-in-passing-var
+#+BEGIN_SRC python :var data=unicode_str
+return data
+#+END_SRC
+#+end_example
+
+#+begin_example
+#+RESULTS: error-in-passing-var
+#+end_example
+
+Will produce no output and prints the following message in the buffer
+=*Org-Babel Error Output*=:
+
+#+BEGIN_EXAMPLE
+  File "<stdin>", line 3
+SyntaxError: Non-ASCII character '\xe2' in file <stdin> on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
+#+END_EXAMPLE
+
+** passing utf-8 strings to python with workaround
+
+A workaround is to use =:preamble= with the value =# -*- coding:utf-8 -*-=
+
+#+begin_example
+#+NAME: ok-in-passing-var
+#+BEGIN_SRC python :preamble "# -*- coding: utf-8 -*-" :var data=unicode_str
+return data
+#+END_SRC
+#+end_example
+
+#+begin_example
+#+RESULTS: ok-in-passing-var
+: “this string is not ascii!”
+#+end_example
-- 
2.1.4


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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-18  1:19     ` William Henney
  2016-05-18  3:42       ` Thomas S. Dye
  2016-05-18  7:10       ` Division of Org documentation: Org manual and Worg (was: Mixing Python2 and Python3 blocks in one file) Karl Voit
@ 2016-05-18 13:45       ` Ken Mankoff
  2016-05-19  3:37         ` William Henney
  2 siblings, 1 reply; 22+ messages in thread
From: Ken Mankoff @ 2016-05-18 13:45 UTC (permalink / raw)
  To: William Henney; +Cc: Karl Voit, emacs-org

Hi Will,

On 2016-05-17 at 21:19, William Henney <whenney@gmail.com> wrote:
> Why is the :python parameter insufficient for your needs? You can also
> use it for different virtual environments

Can you clarify how to do this? Does it work with conda environments too?

Thanks,

  -k.

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-18 13:45       ` Mixing Python2 and Python3 blocks in one file Ken Mankoff
@ 2016-05-19  3:37         ` William Henney
  2016-05-19 13:18           ` Ken Mankoff
  0 siblings, 1 reply; 22+ messages in thread
From: William Henney @ 2016-05-19  3:37 UTC (permalink / raw)
  To: Ken Mankoff; +Cc: Karl Voit, emacs-org

[-- Attachment #1: Type: text/plain, Size: 1601 bytes --]

Hi Ken,

On Wed, May 18, 2016 at 8:45 AM, Ken Mankoff <mankoff@gmail.com> wrote:

On 2016-05-17 at 21:19, William Henney <whenney@gmail.com> wrote:
> > Why is the :python parameter insufficient for your needs? You can also
> > use it for different virtual environments
>
> Can you clarify how to do this? Does it work with conda environments too?
>

Yes, you just have to specify ~/anaconda/envs/NAME_OF_ENV/bin/python as the
name of the interpreter

I gave a conda example in my first message to this thread, but here is
another one.  In the shell, I just made a new environment:

$ condo create --name myenv

And now, I can test it in an org file:

#+BEGIN_SRC python :python ~/anaconda/envs/myenv/bin/python :results
verbatim
import sys
return sys.path
#+END_SRC

#+RESULTS:
: ['', '/Users/will/anaconda/envs/myenv/lib/python35.zip',
'/Users/will/anaconda/envs/myenv/lib/python3.5',
'/Users/will/anaconda/envs/myenv/lib/python3.5/plat-darwin',
'/Users/will/anaconda/envs/myenv/lib/python3.5/lib-dynload',
'/Users/will/anaconda/envs/myenv/lib/python3.5/site-packages',
'/Users/will/anaconda/envs/myenv/lib/python3.5/site-packages/setuptools-20.7.0-py3.5.egg']

Note that this is not /exactly/ equivalent to doing “source activate myenv”
in a terminal shell since it does not run any activation/deactivation
scripts that you might have put in the virtual environment.  But personally
I never use that feature

Will


-- 

  Dr William Henney, Instituto de Radioastronomía y Astrofísica,
  Universidad Nacional Autónoma de México, Campus Morelia

[-- Attachment #2: Type: text/html, Size: 2397 bytes --]

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-19  3:37         ` William Henney
@ 2016-05-19 13:18           ` Ken Mankoff
  2016-05-19 19:21             ` William Henney
  0 siblings, 1 reply; 22+ messages in thread
From: Ken Mankoff @ 2016-05-19 13:18 UTC (permalink / raw)
  To: William Henney; +Cc: Karl Voit, emacs-org

Hi Will,

Thanks for the example. This makes conda + Org work better than it has for me in the past. Unfortunately, one major issues is editing and running code outside of Org via (org-edit-special). Perhaps elpy will support conda environments soon.

On 2016-05-18 at 23:37, William Henney <whenney@gmail.com> wrote:
> #+BEGIN_SRC python :python ~/anaconda/envs/myenv/bin/python :results
> verbatim
> import sys
> return sys.path
> #+END_SRC

Anyway, for those of us using IPython, the following also works:

#+BEGIN_SRC python :python ./myenv/bin/ipython --pylab=osx --pdb --nosep --classic --no-banner --no-confirm-exit
print(np.__version__)
#+END_SRC

  -k.

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-19 13:18           ` Ken Mankoff
@ 2016-05-19 19:21             ` William Henney
  2016-05-19 19:32               ` Ken Mankoff
  0 siblings, 1 reply; 22+ messages in thread
From: William Henney @ 2016-05-19 19:21 UTC (permalink / raw)
  To: Ken Mankoff; +Cc: Karl Voit, emacs-org

[-- Attachment #1: Type: text/plain, Size: 2766 bytes --]

On Thu, May 19, 2016 at 8:18 AM, Ken Mankoff <mankoff@gmail.com> wrote:

>
> Thanks for the example. This makes conda + Org work better than it has for
> me in the past. Unfortunately, one major issues is editing and running code
> outside of Org via (org-edit-special). Perhaps elpy will support conda
> environments soon.
>
>
I think Elpy works fine with conda environments - you just have to call
pyvenv-activate with the desired path.

You have inspired me to try and automate this for org source blocks (see
org snippets below).  It is a bit clunky, but I got it to work.  Let me
know what you think, and any stylistic corrections are welcome (my lisp
skills are sadly lacking).



* Automating Elpy virtual env configuration in babel source editing buffer
+ This function will automatically activate the virtual environment that
corresponds to the current python executable path
+ It should be a harmless no-op if we are not in a python buffer
  #+BEGIN_SRC emacs-lisp
    (defun wjh/elpy-pyvenv-activate-from-babel-info (info)
      "Activate relevant conda virtual env in Babel source editing buffer.
    The :python source block parameter is inspected to determine the venv."
      (let* ((python-command (or (cdr (assoc :python (nth 2 info)))
                                 org-babel-python-command))
             (venv (replace-regexp-in-string "/bin/python$" ""
python-command)))
        (when (string-match "/envs/" venv)
          (pyvenv-activate (expand-file-name venv)))))
  #+END_SRC
+ Then we need to make sure it is run whenever we edit a babel source block
by doing something like =(wjh/elpy-pyvenv-activate-from-babel-info
org-src--babel-info)=, and also to do =(pyvenv-deactivate)= when we leave
+ Unfortunately, there are no actual hooks that I can find for
=org-edit-src-code= or =org-edit-src-exit=
+ For the activation part we can co-opt the =org-babel-edit-prep:python=
function:
  #+BEGIN_SRC emacs-lisp
    (defun org-babel-edit-prep:python (info)
      (wjh/elpy-pyvenv-activate-from-babel-info info))
  #+END_SRC
  + Although this will break if =ob-python.el= decides to define
=org-babel-edit-prep:python= one day
+ For the deactivation part, I can't see any other way than to use advice
  #+BEGIN_SRC emacs-lisp
    (advice-add 'org-edit-src-exit :after #'pyvenv-deactivate)
  #+END_SRC
+ One thing we have to remember is to install the elpy python package and
dependencies in each virtual environment.  For instance:
  #+BEGIN_SRC sh
  source activate myenv
  pip install elpy rope_py3k importmagic autopep8 yapf jedi
  #+END_SRC



-- 

  Dr William Henney, Instituto de Radioastronomía y Astrofísica,
  Universidad Nacional Autónoma de México, Campus Morelia

[-- Attachment #2: Type: text/html, Size: 3714 bytes --]

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-19 19:21             ` William Henney
@ 2016-05-19 19:32               ` Ken Mankoff
  2016-05-19 20:01                 ` William Henney
  0 siblings, 1 reply; 22+ messages in thread
From: Ken Mankoff @ 2016-05-19 19:32 UTC (permalink / raw)
  To: William Henney; +Cc: Karl Voit, emacs-org


On 2016-05-19 at 15:21, William Henney <whenney@gmail.com> wrote:
> I think Elpy works fine with conda environments - you just have to
> call pyvenv-activate with the desired path.

Yes, I have discovered that since I sent my email.

> You have inspired me to try and automate this for org source blocks
> (see org snippets below). It is a bit clunky, but I got it to work.
> Let me know what you think, and any stylistic corrections are welcome
> (my lisp skills are sadly lacking).

Better than my lisp. It looks good, but I like to keep my virtual envs in the folder where the work happens. That is, I create them with =conda env create -y -p ./pyenv=. I think this means your code below will fail because it is looking for an =/envs/= folder. However, my method allows all virtual environments to always have the same name, which could make the code (and testing for the existence of that folder) easier.

> + One thing we have to remember is to install the elpy python package
> and dependencies in each virtual environment. For instance:

This can also be handled by =~./condarc= and the default packages installed whenever a virtual environment is created.

  -k.

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

* Re: Mixing Python2 and Python3 blocks in one file
  2016-05-19 19:32               ` Ken Mankoff
@ 2016-05-19 20:01                 ` William Henney
  0 siblings, 0 replies; 22+ messages in thread
From: William Henney @ 2016-05-19 20:01 UTC (permalink / raw)
  To: Ken Mankoff; +Cc: emacs-org

[-- Attachment #1: Type: text/plain, Size: 1834 bytes --]

On Thu, May 19, 2016 at 2:32 PM, Ken Mankoff <mankoff@gmail.com> wrote:

>
> On 2016-05-19 at 15:21, William Henney <whenney@gmail.com> wrote:
> > I think Elpy works fine with conda environments - you just have to
> > call pyvenv-activate with the desired path.
>
> Yes, I have discovered that since I sent my email.
>
> > You have inspired me to try and automate this for org source blocks
> > (see org snippets below). It is a bit clunky, but I got it to work.
> > Let me know what you think, and any stylistic corrections are welcome
> > (my lisp skills are sadly lacking).
>
> Better than my lisp. It looks good, but I like to keep my virtual envs in
> the folder where the work happens. That is, I create them with =conda env
> create -y -p ./pyenv=. I think this means your code below will fail because
> it is looking for an =/envs/= folder. However, my method allows all virtual
> environments to always have the same name, which could make the code (and
> testing for the existence of that folder) easier.
>
>
Yes, that’s right.  You can just edit the part that says (string-match
"/envs/" venv) and change "/envs/" to a regex that matches the way you name
your environments.  For instance, just the literal string "pyenv" should
work.  Or, even better, "env" would match both your convention and the
standard location.



> > + One thing we have to remember is to install the elpy python package
> > and dependencies in each virtual environment. For instance:
>
> This can also be handled by =~./condarc= and the default packages
> installed whenever a virtual environment is created.
>
>
That's good to know - thanks

Will


>   -k.
>



-- 

  Dr William Henney, Instituto de Radioastronomía y Astrofísica,
  Universidad Nacional Autónoma de México, Campus Morelia

[-- Attachment #2: Type: text/html, Size: 3059 bytes --]

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

* Re: Division of Org documentation: Org manual and Worg
  2016-05-18 10:18               ` Rasmus
@ 2016-05-20 17:15                 ` Daniele Pizzolli
  2016-05-20 18:46                   ` Rasmus
  0 siblings, 1 reply; 22+ messages in thread
From: Daniele Pizzolli @ 2016-05-20 17:15 UTC (permalink / raw)
  To: emacs-orgmode

On Wed, May 18 2016, Rasmus  wrote:

> Hi Daniele,
>
>> So... here is the patch for worg about python and utf-8!  I skipped
>> the part related to the tables, since I do not have a clean
>> workaround.
>
> Thanks for contributing to Worg!
>
> For Worg you just need to have your ssh key added.  Then you can push
> changes yourself.
>
>         http://orgmode.org/worg/worg-about.html
>
> You can email your public ssh key to e.g. Bastien (bzg at gnu dot org).

Hello Rasmus,

Done, just pushed the change succesfully!  I will look forward to
integrate more docs about org-mode and python.

Of course feedback are welcome!

Best,
Daniele

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

* Re: Division of Org documentation: Org manual and Worg
  2016-05-20 17:15                 ` Daniele Pizzolli
@ 2016-05-20 18:46                   ` Rasmus
  0 siblings, 0 replies; 22+ messages in thread
From: Rasmus @ 2016-05-20 18:46 UTC (permalink / raw)
  To: emacs-orgmode


Daniele Pizzolli <dan@toel.it> writes:

> Done, just pushed the change succesfully!  I will look forward to
> integrate more docs about org-mode and python.

Grazie mille!

Caio

-- 
C is for Cookie

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

end of thread, other threads:[~2016-05-20 18:46 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-08  8:31 Mixing Python2 and Python3 blocks in one file Karl Voit
2016-05-08 15:13 ` Karl Voit
2016-05-17 14:24 ` William Henney
2016-05-17 14:54   ` Karl Voit
2016-05-17 15:37     ` John Kitchin
2016-05-18  1:19     ` William Henney
2016-05-18  3:42       ` Thomas S. Dye
2016-05-18  7:11         ` Karl Voit
2016-05-18  7:10       ` Division of Org documentation: Org manual and Worg (was: Mixing Python2 and Python3 blocks in one file) Karl Voit
2016-05-18  8:10         ` Division of Org documentation: Org manual and Worg Daniele Pizzolli
2016-05-18  9:03           ` Rasmus
2016-05-18 10:08             ` Daniele Pizzolli
2016-05-18 10:18               ` Rasmus
2016-05-20 17:15                 ` Daniele Pizzolli
2016-05-20 18:46                   ` Rasmus
2016-05-18 10:18               ` Daniele Pizzolli
2016-05-18 13:45       ` Mixing Python2 and Python3 blocks in one file Ken Mankoff
2016-05-19  3:37         ` William Henney
2016-05-19 13:18           ` Ken Mankoff
2016-05-19 19:21             ` William Henney
2016-05-19 19:32               ` Ken Mankoff
2016-05-19 20:01                 ` William Henney

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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).