I have recently started a new project in PyCharm, finally utilizing anaconda environments. However, after trying to make my first commit through PyCharm, it appears to be using my native python, not the environment set in PyCharm. I've tried to restart PyCharm several times, restarted my computer, and reinstalled the virtual environment.
Here is a copy of pre-commit hook:
set -e
# Run linters and tests
source scripts/lint.sh
The linter is the following: (which python
has been added to highlight the issue)
set -e
set -v
which python
flake8 ~project name~
mypy ~project name~
pytest -x
black --check --fast --quiet ~project name~
set +v
I am running the commit through PyCharm -> VCS -> Commit. Inside PyCharm, the commit fails
(below this are a large amount of mypy errors, but note the environment)
However, if I run the commit from the terminal with $ git commit -m "testing commit"
the commit works. It provides the following response:
This is the correct virtual environment inside of the project, seen here:
Am I setting something up incorrectly? I vastly prefer PyCharm's VCS and would prefer not to have to use git from the terminal.
PyCharm doesn't run git hooks under the virtual environment. The relevant ticket in the bug tracker: https://youtrack.jetbrains.com/issue/PY-12988
It seems that the aforementioned PyCharm ticket won't be fixed soon (it's there since 2014).
This hack below works for me; I added this to the PyCharm ticket:
This is a slightly annoying workaround that works for me:
- Close PyCharm.
cd /your/project/dir
- Open PyCharm from the command line:
PYENV_VERSION="$(pyenv local | head -1)" open /Applications/PyCharm.app/
. I'm using macOS, you should adapt theopen
command to your OS.I have to do it every time I switch projects, otherwise the
pylint
pre-commit hook doesn't work. If you have a similar config for your projects (Python version and not using PyLint), just run PyCharm from the CLI once.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With