Activate/deactivate conda virtualenvs on entering/leaving directories

风格不统一 提交于 2020-04-07 06:14:29

问题


pyenv-virtualenv offers a nice way of activating the environment on the very instant of entering or leaving the directory which contains a .python-version text file which specifies the environment to activate. It works for the directory it is in and all directories contained in it.

The environment is deactivated once we change the directory to something above it. This allows to easily switch between projects or analyses using different python versions (just by changing the directories).

Is there a way of achieving the same behaviour with (ana)conda?

Edit: added bash tag, because - as far as I understand - pyenv achieves this by hooking a custom script into .bashrc (which allows it to monitor the directory changes). If there is no build-in way in conda, how to create a script which would make it possible?


回答1:


As mentioned in my comment, this is currently not supported. There is however an open issue on conda's GitHub asking for this feature.

In the meantime you could use autoenv, a small tool that'll automatically run the code in a .env file when entering a directory and that in a .env.leave when leaving the directory (supports bash/zsh and a couple others).

A simple example taken from their readme which illustrates the feature quite nicely:

$ echo "echo 'whoa'" > project/.env
$ cd project
whoa

To load a conda environment your .env would simply look like this:

conda activate <my_env>

Note 1: Check out the Configuration section of their GitHub readme before you start using it.

Note 2: The author of autoenv actually suggests trying direnv instead. However I've never used it, so I can't comment on it.

From autoenv's readme:

you should probably use direnv instead. Simply put, it is higher quality software. But, autoenv is still great, too. Maybe try both? :)



来源:https://stackoverflow.com/questions/58824674/activate-deactivate-conda-virtualenvs-on-entering-leaving-directories

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!