mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-28 07:14:05 -06:00
Add instructions for using Pyenv and Conda separately
This commit is contained in:
parent
44d5f0ee2e
commit
7378f53252
@ -149,3 +149,84 @@ For detailed usage and examples of each command, you can refer to the [Poetry CL
|
||||
|
||||
|
||||
|
||||
## Pyenv and Conda
|
||||
|
||||
|
||||
[LINK](https://stackoverflow.com/posts/58045893/timeline)
|
||||
|
||||
Personal recommendation: Don't use `pyenv` to install Anaconda or Miniconda.
|
||||
|
||||
Both `pyenv` and `conda` are able to manage different python environments. The `anaconda` installed by `pyenv` should only **serves as a Python interpreter**. Python environment creation from anaconda installed by `pyenv` is still handled by `pyenv virtualenv` but not `conda env create`.
|
||||
|
||||
I've been using these two tools together. It turns out the best solution is to install `conda`, `pyenv` separately, and manage their virtual environments separately as well.
|
||||
|
||||
1. alway initialize `pyenv`
|
||||
2. only expose command `conda` but don't activate any environment
|
||||
|
||||
### Detail
|
||||
|
||||
Install `pyenv`.
|
||||
|
||||
Install Anaconda or Miniconda normally, NOT by `pyenv install`.
|
||||
|
||||
Make sure the `pyenv` and `conda` commands are available in an interactive shell.
|
||||
|
||||
Initialize `pyenv` by putting following content into shell init file (`.bashrc` for Bash, `.zshrc` for ZSH).
|
||||
|
||||
```bash
|
||||
# Put the content into ~/.bashrc or ~/.bash_profile for Bash,
|
||||
# .zshrc for ZSH
|
||||
|
||||
# you may need to add dir of command `pyenv` into PATH,
|
||||
# if command pyenv is not available yet
|
||||
|
||||
if command -v pyenv &>/dev/null; then
|
||||
eval "$(pyenv init -)"
|
||||
fi
|
||||
if command -v pyenv-virtualenv &>/dev/null; then
|
||||
eval "$(pyenv virtualenv-init -)"
|
||||
fi
|
||||
```
|
||||
|
||||
Expose command `conda` but don't activate any environment, even the `base` environment. Execute the following commands in your shell.
|
||||
|
||||
```bash
|
||||
# Run the content in the shell
|
||||
|
||||
# init conda, the following command write scripts into your shell init file automatically
|
||||
conda init
|
||||
|
||||
# disable init of env "base"
|
||||
conda config --set auto_activate_base false
|
||||
```
|
||||
|
||||
Note: After this setup, the default python is the one set by `pyenv global`. Use `pyenv` and `conda` to manage environments separately.
|
||||
|
||||
Examples of managing virtual environments.
|
||||
|
||||
```bash
|
||||
# virtual environments from pyenv
|
||||
pyenv install 3.6.9
|
||||
pyenv virtualenv 3.6.9 new-env
|
||||
pyenv activate new-env
|
||||
pyenv deactive
|
||||
# You can also use `pyenv local`
|
||||
|
||||
|
||||
# virtual environments from conda
|
||||
conda env create new-env python=3.6
|
||||
conda env list
|
||||
conda activate new-env
|
||||
conda deactivate
|
||||
```
|
||||
|
||||
Default env location for `pyenv` is `~/.pyenv/versions`.
|
||||
|
||||
Default env location for `conda`, check output from `conda info`.
|
||||
|
||||
### References
|
||||
|
||||
- [pyenv installation](https://github.com/pyenv/pyenv#installation)
|
||||
- [pyenv virtualenv installatoin](https://github.com/pyenv/pyenv-virtualenv#installation)
|
||||
- [How do I prevent Conda from activating the base environment by default?](https://stackoverflow.com/a/57974390/5101148)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user