用户文章 | 没有什么比现成的解决方案更香的了 - P4Python 玩家速看

本篇作者向华是一名游戏行业从业者,也是 Perforce Helix Core(P4V)用户。
本文内容中存在长命令行,横屏观看更佳。

最近在一台新 MacBook 上部署 P4 工具链,发现 P4Python 库怎么也安装不上。


$ pip3 install p4python
Collecting p4python
Using cached p4python-2021.1.2128019.tar.gz (83 kB)
Building wheels for collected packages: p4python
  Building wheel for p4python (setup.py) ... error
ERROR: Command errored out with exit status 1:
  ...
  ...
  copying P4.py -> build/lib.macosx-10.14-x86_64-3.8
  running build_ext
  ***********************************************
  ** Cannot build P4Python without SSL support **
  ***********************************************
  Traceback (most recent call last):
File "<string>", line 1, in <module>
    File "/private/..../p4python/setup.py", line 475, in <module>
      do_setup()
  ...
  ...
    File "/private/..../p4python/setup.py", line 292, in run
raise Exception("Parameter --ssl is needed")
Exception: Parameter --ssl is needed
----------------------------------------
ERROR: Failed building wheel for p4python
  Running setup.py clean for p4python
Failed to build p4python
...
...
WARNING: You are using pip version 20.2.3; 
however, version 22.0.3 is available.
You should consider upgrading via the 

'/Library/Developer/CommandLineTools/usr/bin/python3 -m 
pip install --upgrade pip'  command.

因为在另一台 Mac Mini 上是可以安装成功的。

之前成功安装的 Mac 最新也就是 macOS Big Sur,直觉告诉我应该是这台 MacBook 的系统太新了,因为它的系统是当前最新的 macOS Monterey。
在这里插入图片描述
但我觉得应该可以尝试解决一下,毕竟这属于 Python 库范畴的问题,先不急着下定论。

先看看官方文档怎么说

从 Perforce 官网可以看到两篇关于p4python 和 ssl 的文档。

Installing p4python
https://www.perforce.com/manuals/p4python/Content/P4Python/python.installation.html
Compiling P4Python with SSL support
https://community.perforce.com/s/article/3728

文档中有提到,在 2019.1 版本之后,是需要安装 OpenSSL 的库的。
在这里插入图片描述
第二篇文档中是用 p4python 源码编译的教学,计划作为最后一招。
在这里插入图片描述

再看看别人怎么说

网上搜到一个方法:


pip3 install --install-option="--ssl" p4python

报错:

error: option --ssl not recognized片

又看到另一个说法,Python 版本不对,OK,那调整下Python版本试试。

手边儿在 Linux 上成功安装的 Python 版本有 3.7.7、3.8.2、3.10.2,当前本机的Python 版本是 3.8.9。

尝试换 Python 版本,安装 pyenv

brew install pyenv

试试 3.7.7


pyenv install 3.7.7

安装时,报 sendfile 报错。


Last 10 log lines:
./Modules/posixmodule.c:9197:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        ret = sendfile(in, out, offset, &sbytes, &sf, flags);

再试安装 3.8.2。
同样报 sendfile 报错。
灰心哥内心 OS:难道都不能换 Python 版本了?
最后一试:


pyenv install 3.10.2

安装成功。

速度切换 local 为 3.10.2。


pyenv local 3.10.2

使用 Python 3.10.2 对应的 pip3 ( pip version 21.2.4 ) 安装一下 p4python。

令人失望,同样报 ssl 错误。

不折腾 Python 版本了,尝试换种姿势安装 p4python。

Perforce 官网下载 whl。


pip3 install p4python-2021.1.2128019-cp39-cp39-macosx_10_12_universal2.whl

仍旧报一样的错,想想也是,虽然是 wheel,但它跟 pip 安装,本质上是一样的。

在这里插入图片描述

Warning! 最后一击

折腾半天,应该只能按照官方文档来做一次源码编译了,并且都不知道是否有其他 dependency 的问题。

承接上文,注意到 WARNING 提到 pip 版本是 20.2.3,有新版本 22.0.3。

事到如今,没办法了,更一发试试!

$ /Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip
Defaulting to user installation because normal site-packages is not writeable
Collecting pip
  Downloading pip-22.0.3-py3-none-any.whl (2.1 MB)
     |████████████████████████████████| 2.1 MB 583 kB/s 
Installing collected packages: pip
WARNING: The scripts pip, pip3 and pip3.8 are installed in
'/Users/jasonxiang/Library/Python/3.8/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, 
use --no-warn-script-location.
Successfully installed pip-22.0.3

再安装 p4python 试试。


$ pip3 install p4python

Successfully installed p4python-2021.1.2128019

神 ~ 奇 ~ 地 ~ 成 ~ 功 ~ 了!
值得一提的是,pip v22.x.x 版本安装库时,还会有个彩色进度条和彩色安装速率,似乎也在表达一种庆祝
在这里插入图片描述
感谢阅读。

你好,我是向华。
前原神项目 P4 Admin,持续集成开发者,8 年游戏测试开发工程师。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值