2

我想使用brew 为 python 3.6.8 安装预提交。我正在使用 macOS Catalina(版本 10.15.7)

brew install pre-commit用来做安装。

我遇到了问题,因为我的预提交使用 Python 3.9,我想避免这种情况(即让 brew 预提交使用 python 3.6)。

当我尝试时brew install pre-commit,我发现会自动看到该消息Downloading https://homebrew.bintray.com/bottles/python%403.9-3.9.0_2.catalina.bottle.tar.gz

我所在的环境是python 3.6.8。(python -V返回python 3.6.8)。

还,

username@USERNAME-M-F1AU % echo "$PATH" 
/Users/username/.pyenv/shims:/Users/username/.pyenv/shims:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

我也有,python 3.9(python@3.9),(虽然它不是活动环境)在/usr/local/Cellar. 我也有一个pre-commit里面的文件夹/usr/local/Cellar。内部子文件夹中的一些路径/usr/local/Cellar/pre-commit链接到 python 3.9。以下是相同的示例。

python3 -> ../../../../../opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin/python3.9
python -> ../../../../../opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin/python3.9

的第一行/usr/local/bin/pre-commit是:

#!/usr/local/Cellar/pre-commit/2.9.0/libexec/bin/python

我已经尝试过以下方法:

  • 将 Python 环境更改为 Python 3.6。此处未解决问题(使用 python 3.9 预提交的符号链接)
  • 删除缓存 ( rm -r /Users/username/.cache/pre-commit)。这里也发生了同样的事情(python 3.9 的预提交符号链接仍然存在)。
  • 再次安装预提交(rm -r /usr/local/Cellar/pre-commit后跟brew install pre-commit)。这里也发生了同样的事情(使用 python 3.9 预提交的符号链接)。
  • 使用下面显示的方法删除和重新调整符号链接。
ln -nfs /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /usr/local/Cellar/pre-commit/2.9.0/libexec/bin/python
ln -nfs /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /usr/local/Cellar/pre-commit/2.9.0/libexec/bin/python3

在这里,我收到以下错误/usr/local/Cellar/pre-commit/2.9.0/libexec/bin/python3: No module named pre_commit

我可以使用 brew 安装预提交以使其使用 python 3.6 而不是 python 3.9 的最佳方式是什么?

我看到了这个 brew precommit page。看起来brew install pre-commit自动总是使用 python 3.9.0。

任何帮助将不胜感激。

4

1 回答 1

1

brew 仅适用于最新版本的软件——它们将瓶子与最新版本的 python 打包在一起

可以针对较旧的公式进行固定,尽管此时 3.6 包不再干净地构建(我尝试过,作为向您展示如何做到这一点的一种方式,但它们已经烂掉了)

因为看起来您正在使用pyenv-可能最好的选择是使用它安装python3.6,然后使用从那里pip安装pre-commit

我自己不使用 pyenv,但如果我没记错的话,你会运行:

pyenv install 3.6.12
pyenv global 3.6.12

然后您将使用python3.6 -m pip install pre-commit --user(您可能需要使用/将--user bin目录添加到您的目录中)PATH.bashrc.zshrc


免责声明:我是 pre-commit 的创建者,我为它的 brew 公式做出了一些贡献

于 2020-11-24T17:23:44.160 回答