【问题标题】:How can I use brew and install precommit for Python 3.6.8如何使用 brew 并为 Python 3.6.8 安装 precommit
【发布时间】:2021-03-06 21:27:34
【问题描述】:

我想使用 brew 为 python 3.6.8 安装 pre-commit。我正在使用 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。我在/usr/local/Cellar 内还有一个pre-commit 的文件夹。 /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 安装 pre-commit 以使其使用 python 3.6 而不是 python 3.9 的最佳方式是什么?

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

任何帮助将不胜感激。

【问题讨论】:

    标签: python git homebrew pre-commit pre-commit.com


    【解决方案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(您可能需要使用.bashrc / .zshrc--user bin 目录添加到您的PATH


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

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 2023-01-31
      相关资源
      最近更新 更多