【问题标题】:How do I install p4python on macOS 10.15 Catalina?如何在 macOS 10.15 Catalina 上安装 p4python?
【发布时间】:2019-12-17 10:21:44
【问题描述】:

尝试在 macOS 10.15 Catalina 上安装 p4python 时出现错误。
命令pip install p4python

Cannot build P4Python without SSL support
Exception: Parameter –ssl is needed

当我尝试安装旧版本时,我也会收到错误消息。
命令pip install p4python==2018.2.1743033

Cannot match OpenSSL Version string ‘LibreSSL 2.8.3’
Cannot build P4Python without SSL support

第二个错误似乎是 macOS 使用 LibreSSL 而不是 OpenSSL 引起的。

知道如何安装它吗?

【问题讨论】:

  • 你读过第一条错误信息吗?

标签: python macos perforce macos-catalina p4python


【解决方案1】:

p4python 无法安装,因为它没有适用于 Python 3.8 的软件包。 这是默认安装的 Python 3 版本。最新版本只有 Python 3.7 以下的包:p4python 2019.1.1858212 PyPI

我用 pyenv 安装了 Python 3.7 来安装/工作 p4python。

// install pyenv and required python version
brew install pyenv
pyenv install 3.7.7

// add following to ~/.bash_profile
export PYENV_ROOT="$HOME/.pyenv/shims"
export PATH="$PYENV_ROOT:$PATH"
export PIPENV_PYTHON="$PYENV_ROOT/python"

// go to project directory and set python version
cd project
pyenv local 3.7.7
// check verion
python --version
// install p4python
pip install p4python

旧答案:

Perforce 技术支持的回答

MacOS 10.15.2 不支持 p4python。

【讨论】:

  • Perforce 是否有指向此评论的链接? (我需要向管理层提出……?)
  • 这是对支持电子邮件的回复,所以没有链接。
【解决方案2】:

您是否尝试过完全按照它告诉您的去做?

pip install p4python -ssl

【讨论】:

  • 这似乎将选项传递给 pip 而不是 p4python。输出:Usage: pip install [options] ... no such option: --ssl
  • 你可能会看看这个答案:*.com/questions/677577/…
  • 基本上你正在尝试运行 setup.py 并将 -ssl 命令传递给它:swarm.workshop.perforce.com/files/guest/perforce_software/…
  • 您可以手动下载模块并自己运行 setup.py 或尝试弄清楚如何通过 pip 将参数传递给 setup.py
  • 我能够使用以下命令通过 pip 将参数传递给 setup.py:pip install --install-option="--ssl" p4python。但现在我从 setup.py 收到错误 option --ssl not recognized
【解决方案3】:

我在 Windows 上遇到了同样的问题,并在这里回答了类似的问题:Cannot build P4Python without SSL support win 10

我怀疑同样的答案也适用于 macosx:

问题是 p4python 是针对 windows 和 macosx 上特定版本的 python 发布的。查看https://pypi.org/project/p4python/#files 并搜索“macosx”。您将在文件名中看到cpXY,例如。 cp39 表示这个包可以在 python X.Y 上运行,例如。 3.9.尝试在不受支持的 python 版本上安装 p4python 将导致此错误。

【讨论】: