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 解决了这个问题。
brew update && brew upgrade && brew install openssl
将/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/
为缺失的 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 的回答
我使用 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 解决了这个问题。
brew update && brew upgrade && brew install openssl
将/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/
为缺失的 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 的回答