emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Fabio Natali <me@fabionatali.com>
To: emacs-orgmode@gnu.org
Subject: Command not found when using Org + Guix + envrc.el
Date: Sun, 16 Apr 2023 15:56:24 +0100	[thread overview]
Message-ID: <877cubri3r.fsf@reckondigital.com> (raw)

Hi!

I tend to set up my literate programming projects with:

- Emacs and Org
- Guix, to install the dependencies and create a development environment
- direnv, to automatically load the Guix environment
- envrc.el, to use direnv from Emacs

It's a great setup and I'm very grateful to the above projects, but
there are a few corner cases where things don't work as expected.

For instance:

- Define a Guix environment that includes Python (Python not being
  installed on the system otherwise)
- Create an envrc file that activates the Guix environment, e.g. via
  ~eval "$(guix shell --search-paths --manifest="$1")~
- In the same folder, create an Org file with a Python block

The block is evaluated correctly when a new Emacs instance is launched
from within the folder, and therefore from within the activated
environment.

However, things don't work as expected when using emacsclient with an
existing Emacs server. Thanks to envrc.el the Guix environment gets
apparently activated in the buffer, as confirmed by the envrc flag in
the modeline and by the output of =(getenv "PATH")=. However, evaluating
the block results in the following error:

#+begin_quote
/bin/bash: line 1: python: command not found
[ Babel evaluation exited with code 127 ]
#+end_quote

Tangentially, if the block's header includes =:session=, as in
=#+begin_src python :session=, then the error is slightly different and
is displayed in the minibuffer as opposed to a separate buffer:

#+begin_quote
make-process--with-editor-process-filter: Searching for program: No such file or directory, python
#+end_quote

Things work fine when manually setting =org-babel-python-command=, but
hardcoding the Guix store path is clearly inconvenient, to start with
it'd require constant update.

#+begin_quote
(setq-local org-babel-python-command "/gnu/store/...")
#+end_quote

Does anyone have any idea on how to investigate this further? I'm still
unsure whether this may have to do with envrc.el, Org Babel, or possibly
with some quirks in my configuration.

Thanks, cheers, Fabio.


             reply	other threads:[~2023-04-16 14:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-16 14:56 Fabio Natali [this message]
2023-04-16 16:21 ` Command not found when using Org + Guix + envrc.el Adolfo De Unanue
2023-04-18 15:38   ` Fabio Natali
2023-04-17 10:35 ` Ihor Radchenko
2023-04-18 15:34   ` Fabio Natali

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877cubri3r.fsf@reckondigital.com \
    --to=me@fabionatali.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).