MichaelAquilina / zsh-autoswitch-virtualenv

🐍 ZSH plugin to automatically switch python virtualenvs (including pipenv and poetry) as you move between directories
GNU General Public License v3.0
507 stars 80 forks source link

python binary not found on PATH #175

Closed seakayone closed 8 months ago

seakayone commented 2 years ago

Issue Details

When starting my zsh in iTerm I get the following error message:

WARNING: python binary not found on PATH.
zsh-autoswitch-virtualenv plugin will be disabled.
~❯

Even though Python is installed with pyenv:

~❯ python --version
Python 3.8.12
~❯ type python
python is /Users/kleinboelting/.pyenv/shims/python

When I start zsh in zsh the error messages vanishes and the zsh-autoswitch-virtualenv plugin is working.

~❯ zsh
~❯  cd /tmp/foo
Switching virtualenv: foo-ktrt [Python 3.8.12]
(foo-ktrt) /tmp/foo❯

Reloading omz solves the problem as well.

~❯ omz reload
~❯ cd /tmp/foo
Switching virtualenv: foo-ktrt [Python 3.8.12]
(foo-ktrt) /tmp/foo❯

Please provide the following details when opening an issue:

Operating System (uname -a)

Darwin TinaBrix.local 21.4.0 Darwin Kernel Version 21.4.0: Mon Feb 21 20:35:58 PST 2022; root:xnu-8020.101.4~2/RELEASE_ARM64_T6000 arm64

zsh version (zsh --version)

zsh 5.8 (x86_64-apple-darwin21.0)

autoswitch-virtualenv version

echo "$AUTOSWITCH_VERSION"
3.6.0

How is zsh-autoswitch-virtualenv installed?

Steps to reproduce the issue

Start up zsh in iTerm

gist link to your zshrc

https://gist.github.com/seakayone/7704c5de3d5f2635297778b2b3d20b68

MichaelAquilina commented 2 years ago

I think the reason is that this plugin loads before your setup pyenv in your zshrc.

So at the point in time it checks if python exists - it fails.

This obviously isnt great so I'll come up with a fix :)

MichaelAquilina commented 2 years ago

@seakayone in the meanwhile, you can run: enable_autoswitch_virtualenv to force enable it.

specifically, you can add it to the end of your zshrc to make sure it loads up

seakayone commented 2 years ago

Thank you very much for the quick reply. enable_autoswitch_virtualenv is really helpful as a workaround - much quicker than reloading the entire omz.

I also tried setting AUTOSWITCH_DEFAULT_PYTHON but this is only affecting new virtual environments. Maybe this could be checked as fallback when the plugin tries to detect the python interpreter?

MichaelAquilina commented 2 years ago

I think the correct solution is to fix this plugin to correctly work with plugins which are loaded after it :) if you can tesdt #176 we should be be to check if it fixes this issue.

seakayone commented 2 years ago

Agreed, that is even better. Thanks for the fix, it works for me.

hans-d commented 2 years ago

any plans on merging #176 ?

MichaelAquilina commented 2 years ago

Hi @hans-d :) yes, seems like I just forgot about that one but I will work on merging it some time soon