zsh:当我尝试 运行 venv 中的应用程序时中止 python 错误

zsh: abort python error when I try to run the app in venv

我使用 pyenv 设置了 Python 3.6,这样我将来可以管理多个 Python 版本(例如 3.7 和 3.8)。我没有使用 Homebrew 安装 Python 因为它改变了系统版本。这是我第一次使用 zsh shell,因为它是 Catalina OS 中的默认值 shell。目前,我为现有项目使用 3.6.8 版本。

这是我当前的设置:

% pyenv versions

结果:

  system
* 3.6.8 (set by /Users/macbook/.python-version)
  3.7.3

% python -V 结果为 Python 3.6.8

% which python 结果为 /Users/macbook/.pyenv/shims/python

% echo $PATH 结果为 /Users/macbook/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

我的~/.zshrc的内容是PATH=$(pyenv root)/shims:$PATH

我使用 % python -m venv venv 创建了一个虚拟环境,安装了所有必要的包,当我激活它并获得 python 路径时,

(venv) % python -V
Python 3.6.8

(venv) % which python
/Users/macbook/python-project/venv/bin/python

(venv) % echo $PATH
/Users/macbook/python-project/venv/bin:/Users/macbook/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

最后,当我尝试 运行 应用程序时,我总是得到 zsh: abort 错误:

(venv) % python app.py
zsh: abort      python app.py

(venv) % export FLASK_APP=app.py
(venv) % flask run
zsh: abort      flask run

我不知道还缺少什么,或者我的 python 路径有什么问题吗?

谢谢!

通过网络搜索后,我认为这是最新的 MacOS 或 Homebrew 的常见问题。 thread 解决了这个问题。

  1. brew update && brew upgrade && brew install openssl

  2. 将/usr/local/Cellar/openssl@1.1/1.1.1g中的两个文件复制到/usr/local/lib/

    cd /usr/local/Cellar/openssl@1.1/1.1.1g/

    sudo cp libssl.1.1.1.dylib libcrypto.1.1.1.dylib /usr/local/lib/

  3. 为缺失的 openssl 库添加符号链接

    cd /usr/local/lib

    sudo ln -s libssl.1.1.1.dylib libssl.dylib

    sudo ln -s libcrypto.1.1.1.dylib libcrypto.dylib

对我来说,以下方法有效:

Python 3.6.9 MacOs Catalina 10.15.7

cd /usr/local/Cellar/openssl@1.1/1.1.1h/
cp lib/libssl.1.1.dylib lib/libcrypto.1.1.dylib /usr/local/lib
cd /usr/local/lib
sudo ln -s libssl.1.1.dylib libssl.dylib
sudo ln -s libcrypto.1.1.dylib libcrypto.dylib

感谢 Zhanrah 的回答