Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to activate a python environment on load of a layout file #3361

Open
satyamjay-iitd opened this issue May 20, 2024 · 3 comments
Open

How to activate a python environment on load of a layout file #3361

satyamjay-iitd opened this issue May 20, 2024 · 3 comments

Comments

@satyamjay-iitd
Copy link

I want to do something very simple(or so I thought).
Create two tabs, one with helix opened, and other with just a shell.

I wrote the following layout file.

layout {
    tab name="editor" {
       pane command="zsh" {
            args "-c" "source venv/bin/activate && hx"
            cwd "~/dev/calcite-qp/python"
        }
    }

    tab name="shell" {
        pane command="zsh" {
            args "-c" "source venv/bin/activate"
            cwd "~/dev/calcite-qp/python"
        }
    }
}

The editor opens fine, but the shell is not working. Kindly point in the right direction.

@shaleh
Copy link

shaleh commented May 24, 2024

Not a direct answer, but maybe look into the direnv tool? It will automatically load a python env whenever you cd into or otherwise load a directory in your shell. Super super handy. I have it load python and some environment variables some tools need. It is also a generic tool that works across shells and other programming languages. It can load all kinds of things.

https://direnv.net/

@susludusrotalis
Copy link

Encountered the same problem. While not against using direnv, I am intending to use Zellij for collaborative work, so don`t want to have extra dependencies. Maybe there is some workaround to make Zellij source venv/bin/activate on startup or something like that?

@susludusrotalis
Copy link

susludusrotalis commented Jun 10, 2024

@satyamjay-iitd Think I`ve found the solution. You can source virtualenv like this:

layout {
    pane command="bash" {
        args "-c" "bash --rcfile <(cat ~/.bashrc; echo 'source venv/bin/activate';)"
    }
}

I'm still not sure exactly as to why it works as though starting bash with bash -c should`ve resulted in both bash shells to be closed. But it works.
<(command_list)> is the Bash Process Substitution syntax

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants