-
-
Save markph0204/dd97d9d301483fcc2cf458f5e44ff25d to your computer and use it in GitHub Desktop.
| # enable direnv for python | |
| # this will enable the commandline support as well as support pycharm | |
| # 1 install direnv (Homebrew / pip) | |
| # 2 edit your .bashrc, .bash_profile or .bash_aliases | |
| function venv-here { | |
| # you could just use 'layout python' here for 2.7.x | |
| echo "layout python3" > .envrc | |
| echo "ln -s .direnv/\$(basename \$VIRTUAL_ENV)/ .env" >> .envrc | |
| } | |
| # sample | |
| # cd to any path, then run... | |
| venv-here | |
| # prompted to run direnv allow | |
| direnv allow | |
| #done! |
Thanks @markph0204 ! I really appreciate your reply. I didn't think you/anyone would get to it so quickly! 🥇 👍
I want to specifically understand why .direnv is being used in this context:
echo "ln -s .direnv/\$(basename \$VIRTUAL_ENV)/ .env" >> .envrc
I looked all through https://direnv.net and only found references to .direnv here in the layout python and layout ruby sections of direnv stdlib.
So I think from that reading, that it looks like a $PWD/.direnv file is only created for those layout types. And since I'm using pipenv, it will not be created.
I did some testing and found that I didn't have to have anything but an empty .env file in my project for PyCharm to detect the pipenv venv.
So now the function can be written differently:
function pipenv-venv {
echo "pipenv --python $(<.python-version)" > .envrc
echo "layout pipenv" >> .envrc
echo "dotenv .env" >> .envrc
echo "pipenv update" >> .envrc
# PyCharm fix - an empty .env file
echo "" > .env
}
Thanks a lot!
@gloc-mike
Yes from what I recall -- .env was linked because that is what PyCharm use to only look for.
I think you mean this? https://direnv.net