我最近在PyCharm中启动了一个新项目,最终利用了anaconda环境。但是,在尝试通过PyCharm进行首次提交后,似乎使用的是本机python,而不是PyCharm中设置的环境。我尝试过几次重新启动PyCharm,重新启动计算机,然后重新安装虚拟环境。
以下是预提交钩子的副本:
set -e
# Run linters and tests
source scripts/lint.sh
以下是短毛绒:(已添加{which python
以突出显示该问题)
set -e
set -v
which python
flake8 ~project name~
mypy ~project name~
pytest -x
black --check --fast --quiet ~project name~
set +v
我正在通过PyCharm-> VCS-> Commit运行提交。在PyCharm内部,提交失败
但是,如果我使用$ git commit -m "testing commit"
从终端运行提交,则提交有效。它提供以下响应:
我设置不正确吗?我非常喜欢PyCharm的VCS,并且不想在终端上不必使用git。
答案 0 :(得分:1)
似乎上述PyCharm票不会很快修复(自2014年以来就存在)。
以下这种技巧对我有用; I added this to the PyCharm ticket:
这对我来说是一个有点烦人的解决方法:
- 关闭PyCharm。
cd /your/project/dir
- 从以下命令行打开PyCharm:
PYENV_VERSION="$(pyenv local | head -1)" open /Applications/PyCharm.app/
。我正在使用macOS, 应该根据您的操作系统修改open
命令。每次切换项目时都必须这样做,否则
pylint
pre-commit钩子不起作用。如果你有一个 项目的类似配置(Python版本且未使用 PyLint),只需从CLI运行一次PyCharm。
答案 1 :(得分:0)
PyCharm不在虚拟环境下运行git hooks。错误跟踪器中的相关票据:https://youtrack.jetbrains.com/issue/PY-12988
答案 2 :(得分:0)
您可以手动编辑自动生成的预提交文件(位于项目目录中的.git/hooks/pre-commit
),以添加虚拟环境的路径,替换为:
# start templated
INSTALL_PYTHON = 'PATH/TO/YOUR/ENV/EXECUTABLE'
使用
# start templated
INSTALL_PYTHON = 'PATH/TO/YOUR/ENV/EXECUTABLE'
os.environ['PATH'] = f'{os.path.dirname(INSTALL_PYTHON)}{os.pathsep}{os.environ["PATH"]}'
答案 3 :(得分:0)
这对我有用。
我遇到以下错误:
18:37 Commit failed with error
0 file committed, 1 file failed to commit: Update pre-commit hooks
env: python3.7: No such file or directory
当我在项目存储库中导航到.git/hooks/pre-commit
时,发现shebang行是#!/usr/bin/env python3.7
。
这是一个问题,因为在MacOS上调用python3.7会导致以下结果:
zsh: command not found: python3.7
我可以添加一个全局python3.7,或者更新shebang。我选择了后者,将shebang行更改为:
#!/usr/bin/env python3
这为我解决了这个问题。
答案 4 :(得分:0)
以上解决方案都不适用于我:PyCharm 2020.3
上的 Windows 10
我所做的是重命名 .git\hooks\pre-commit
-> .git\hooks\pre-commit.py
并用下一个内容创建了一个新的 .git\hooks\pre-commit
:
#!/bin/bash
BASEDIR=$(dirname "$0")
/c/<PATH-to-YOUR-Python>/python.exe $BASEDIR/pre-commit.py $@
很有魅力!