-
-
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! |
Is it just a kludge to get PyCharm to detect and load venv's?
Yes from what I recall -- .env was linked because that is what PyCharm use to only look for.
I don't find any references to the .direnv file anywhere on my system and it's rather difficult tracking it down on the net too so it would be great if someone could offer an explanation please! :)
I think you mean this? https://direnv.net
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!
Hi,
This gist has been invaluable. Thanks for putting it out there! :)
PyCharm detects & loads my venv, so all good there! :)
But, I have however, been confused by the symbolic link to
.direnv
inecho "ln -sf .direnv/\$(basename \$VIRTUAL_ENV)/ .env" >> .envrc
. I get this message printed,direnv: .env at .env not found
, which is the result of runningdotenv .env
. Is it just a kludge to get PyCharm to detect and load venv's?I'm using
layout pipenv
so any venv's created are actually located in~/.local/share/virtualenvs/
.I don't find any references to the
.direnv
file anywhere on my system and it's rather difficult tracking it down on the net too so it would be great if someone could offer an explanation please! :)Just for reference:
Thanks again! I really appreciate it!