Hi Jack,
Thanks for your suggestion to use ob-jupyter. That gives me the stdout and graphical output in separate results blocks as I wanted, and no return statement is needed. I don't know if there are any side-effects to using multiple sessions in a single org file, but so far it seems to work quite well.

On Mon, Feb 24, 2020 at 11:18 AM Jack Kamm <jackkamm@gmail.com> wrote:
Hi RC,

R C <recifx@gmail.com> writes:

> My python src blocks often have both graphical output as well as the
> results of some numerical calculation displayed using print statements.
>
> When exported I would like the line: return 'img/ex1.png' not to be
> included in the listing of the src block.
>
> Also, the output of the print statement is not displayed in this case.

The external ob-jupyter [0] accomplishes what you want:

1. It can return multiple types of output, e.g. print statements and plots.
2. It doesn't require the "return" statement.

It's main limitations are:
1. It requires jupyter.
2. It requires using session blocks.

I'd recommend checking it out. It has excellent Python support.

If you prefer a native solution, I think the options are:

1. noweb (as Eric mentioned). Then you only need to write the code
once, but note that it will be executed twice.

2. Using multiple session blocks to return output and value
separately. Since they use the same state, you would only need to
execute the code once.

3. Possibly, you could insert the link to the image separately, create a
named reference to it, and pass it to the Python block via ":var", which
would create at an image at that link. Then use ":results output" to
capture the print statements. I'm not 100% sure if this will work.

[0] https://github.com/dzop/emacs-jupyter


--
Regards,
RC