Mac OS Catalina 全新安装的 pip3 和 pipenv 问题

Problems with pip3 and pipenv with Mac OS Catalina fresh install

我首先使用

安装了 xcode 开发工具
%xcode-select --install

然后我使用

安装了 Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后我做了

%brew install python3

%pip3 install pipenv

但是当我打电话给

%pip3

我明白了

% pip3
Traceback (most recent call last):
  File "/Library/Developer/CommandLineTools/usr/bin/pip3", line 10, in <module>
    sys.exit(main())
TypeError: 'module' object is not callable

这是我的 pip3 和 python3 所在的位置

% which pip3
/usr/bin/pip3

% which python3
/usr/bin/python3

谁能帮我解决这个问题。我正在尝试学习编程,但如果不解决这个问题我就无法继续

MacOS Catalina 附带了它自己的 python3pip3 版本,所以这可能是 macOS 和 Brew 安装的 Python 库之间的冲突。我通过不再使用 Brew 解决与 Python.

相关的任何问题来解决类似问题

我的建议:来自 Catalina 的全新安装,运行 sudo pip3 install pipenv。为您处理的每个项目创建一个单独的目录,并在您每次处理该项目时从该目录创建 运行 pipenv shell。不要在系统范围内安装任何软件包,也不要覆盖 macOS 的 Python。您所做的任何事情,都在 Pipenv 管理的虚拟环境中进行——仅通过 pipenv install <pkg>.

安装软件包

完成所有这些操作后,Python 二进制文件和所有相关包的正确版本将保留在每个项目的 ~/.local/share/virtualenvs/ 目录中。这样,未来的 macOS 更新应该不会每次都破坏依赖关系。

升级到 Catalina 后我遇到了类似的问题,因为我已经在使用自制软件并且 Python/pipenv 按预期停止工作。我的 Python 每次都崩溃,我 运行 pipenv install 出现此 developer.apple.com thread. The answer by Mickey Ristroph 中描述的错误,听起来像是一个不错的解决方法,但它并没有真正解决问题。

我希望能够为我安装的所有 MacOS 软件使用自制软件 - 包括 Python。但是有帮助,因为问题是使用了错误的版本 libcrypto dylib 版本。要解决此问题,请更新并升级 brew 软件包并确保已安装 openssl

brew update && brew upgrade && brew install openssl

然后我们创建新的符号链接到安装的自制程序 libssl.dyliblibcrypto.dylib 库:

# go to homebrew installed openssl dir:
cd /usr/local/Cellar/openssl/1.0.2t/lib
sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib/

cd /usr/local/lib
# if there are links already, you may backup them:
mv libssl.dylib libssl_bak.dylib
mv libcrypto.dylib libcrypto_bak.dylib

# now create new symbolic links:
sudo ln -s libssl.1.0.0.dylib libssl.dylib
sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib

现在我的自制程序安装了 Python(和 pipenv)再次发挥作用。

您需要将用于在 macOS Catalina 中安装库和支持的原始命令更改为:

python3 -m pip install pipenv  

(而不是 pip3 install pipenv