1

I used python installer (downloaded from www.python.org) to install python3.8 & python 3.9. Is it possbile to switch them between different projects ? I don't think pyenv will work here (yet) because pyenv can only switch the versions installed by it. https://github.com/pyenv/pyenv/issues/1628 confirms this.

So for example, when run pyenv versions on my machine

➤ pyenv versions
* system (set by /Users/qiulang/.pyenv/version)
  3.4.0
  3.5.3
  3.6.10 

The system version there is python3.9.

Most of my python scripts need 3.8 because I used pip3 install the packages under 3.8.

I installed 3.9 to experience the latest feature but I don't won't 3.9 to be my default python3, otherwise I need to installed the packages all over again.

Now I can't find a way to do that so I had to change my script from

#! /usr/bin/env python3 to #! /usr/local/bin/python3.8 as a temporary solution.

1 Answer 1

2

I had the same question just a week or so ago. There's an extension for pyenv called pyenv-register. I installed that and used it to register each of my Homebrew installed Python versions. This gives you a pyenv version for each Python you register that looks something like system-3.9.0.

After registering the Homebrew installed Python versions, I created symlinks in ~/.pyenv/versions to create some simpler aliases for each of the versions I registered. Here's what that directory looks like on my system:

lrwxr-xr-x  1 steve  staff    6 Jun 23  2019 2 -> 2.7.16
lrwxr-xr-x  1 steve  staff    6 Jun 23  2019 2.7 -> 2.7.16
drwxr-xr-x  6 steve  staff  192 Jun 23  2019 2.7.16
lrwxr-xr-x  1 steve  staff    5 Jun 23  2019 3 -> 3.7.3
lrwxr-xr-x  1 steve  staff    5 Jun 23  2019 3.7 -> 3.7.3
drwxr-xr-x  6 steve  staff  192 Jun 23  2019 3.7.3
lrwxr-xr-x  1 steve  staff    5 Nov 14 14:51 3.8 -> 3.8.6
lrwxr-xr-x  1 steve  staff   12 Nov 14 14:51 3.8.6 -> system-3.8.6
lrwxr-xr-x  1 steve  staff    5 Nov 14 14:51 3.9 -> 3.9.0
lrwxr-xr-x  1 steve  staff   12 Nov 14 14:51 3.9.0 -> system-3.9.0
drwxr-xr-x  6 steve  staff  192 Nov 14 14:48 system-3.8.6
drwxr-xr-x  6 steve  staff  192 Nov 14 14:50 system-3.9.0

and here's what pyenv versions gives me:

% pyenv versions
  system
  2
  2.7
  2.7.16
* 3 (set by /Users/steve/.pyenv/version)
  3.7
  3.7.3
  3.8
  3.8.6
  3.9
  3.9.0
  system-3.8.6
  system-3.9.0

This works great for me, having installed my new Pythons with Homebrew. I assume that it will work just as well for Python versions installed with a downloaded installer. I hope this helps you out!

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks I will try that and maybe get back to you.
I installed the plugin but when pyenv register I got the error "virtualenv is not installed to /Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8 ... pyenv: Failed to download virtualenv" So pyevn register failed.
I still can't solve the problem with pyenv-register. I raise an issue to them and no reply. So I have to give it up :$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.