写点什么

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

  • 2022 年 3 月 16 日
  • 本文字数:2107 字

    阅读完需:约 7 分钟

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

本篇作者向华是一名游戏行业从业者,也是 Perforce Helix Core(P4V)用户。


本文内容中存在长命令行,横屏观看更佳。

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



$ pip3 install p4pythonCollecting p4pythonUsing cached p4python-2021.1.2128019.tar.gz (83 kB)Building wheels for collected packages: p4python Building wheel for p4python (setup.py) ... errorERROR: 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 runraise Exception("Parameter --ssl is needed")Exception: Parameter --ssl is needed----------------------------------------ERROR: Failed building wheel for p4python Running setup.py clean for p4pythonFailed 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 pipDefaulting to user installation because normal site-packages is not writeableCollecting pip  Downloading pip-22.0.3-py3-none-any.whl (2.1 MB)     |████████████████████████████████| 2.1 MB 583 kB/s Installing collected packages: pipWARNING: 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 年游戏测试开发工程师。

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
用户文章 | 没有什么比现成的解决方案更香的了 - P4Python 玩家速看_perforce_龙智—DevSecOps解决方案_InfoQ写作平台