-
-
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