问题标签 [p4python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2768 浏览

python - 尝试导入 P4 时没有名为 P4API 的模块

我正在尝试将 Perforce 与 python 一起使用。当我这样做时:

我得到的错误信息是:

尝试查看不同的答案,但都没有解决我的问题...似乎 P4 的代码管理非常混乱,模块名称不断变化...有人请告诉我 p4 的 python api 发生了什么以及如何安装它们?

顺便说一句,我使用的是 Windows 10 64 位,谢谢!

0 投票
1 回答
775 浏览

python - 文件不在客户端

自从我开始实现工作区意识以来,我在 P4Python 上遇到了一个非常奇怪的问题。

情况如下:

我有一个“P4Commands”模块,它继承了 P4 并在__init__()

然后,我分别有以下课程:

  • P4用户
  • P4工作区
  • P4更改列表

P4Commands 模块继承了 P4 并调用其父级的“运行”方法,同时还注入了一些我实现的自定义缓存以加速大量调用。run 方法被这样调用:

然后将其记录并返回。

当我对文件调用操作时,我首先通过 P4User 确定文件所在的工作区。然后,我对找到匹配的工作区实例执行以下操作:

其中 FUNCS 是 P4Commands 模块实例。

我遇到的问题是,对于一个在我调用fstat时返回信息的文件,只有当我调用“edit”命令时,才会得到“file (s) not on client”作为错误。其他所有命令(add、fstat、where 等)似乎都可以正常工作。这只发生在编辑命令上。

奇怪的是,当我使用完全相同的参数但在工作区上下文管理器之外(直接在 P4User 模块上)运行该方法时,我没有收到错误。

它变得更奇怪:我尝试禁用上下文管理器,仍然没有乐趣。

更奇怪的是,在阅读本文时,您可能会想“哦,客户端设置不正确”。我尝试记录客户端工作区,并且它被正确设置和取消设置。就像我说的,所有其他命令都可以工作,只是不能编辑

唯一剩下的情况是多个 P4 模块实例的连接受到干扰。我尝试将 P4Commands 设为静态全局,每个模块仅共享一个实例。那也没有奏效。

我尝试了各种方法,但在这一点上我有点卡住了。有没有人知道如何解决这个问题?

0 投票
0 回答
544 浏览

python - 使用 p4python 提交时出错

我第一次使用 p4python,遇到了一个问题,我无法将我的更改提交到 perforce 服务器。我能够连接到服务器并打开文件进行编辑。

执行 p4_run_submit(change_spec) 之前的 change_spec 对象(见下文)看起来不错,但它仍然抱怨没有要提交的文件。任何指针???

0 投票
1 回答
328 浏览

python - 我想通过我的 python 脚本从 perforce 组中删除用户

我从 perforce 手册中得到的这个命令:

如何使用方法 p4.run() 在我的脚本中使用此命令

0 投票
3 回答
1046 浏览

python - 如何通过python脚本检查用户是否存在于perforce中

我想制作脚本以从 perforce 中删除终止的用户,但首先必须检查用户是否存在于 perforce 中。我在 python 脚本中尝试了以下命令,但没有奏效。

perforce 中是否有任何命令或以任何方式在我的脚本中使用上述命令。

0 投票
1 回答
727 浏览

perforce - p4python 协调和 fetch_change

我正在尝试将 p4python 的 run_reconcile() 与我从 fetch_change() 获得的更改列表结合使用。代码是这样的:

但是,我收到错误:

0 投票
2 回答
1402 浏览

perforce - 如何在 p4python 中使用 p4tickets

有大量使用您的用户/密码作为凭据以使用 p4python 连接到 p4 服务器的示例,但很少描述如何使用 p4ticket。目前还不清楚如何将 p4tickets 文件与 p4python 一起使用。

0 投票
1 回答
462 浏览

python - p4python run describe 没有返回列表

对于某些更改列表,这工作得非常好 p4.run 正在返回列表,我能够提取更改列表文件及其修订号。

但有时 p4.run 没有返回正确的列表而是返回字符串,我无法提取更改列表文件及其修订号并给出以下错误

depotfiles = result[0]["depotFile"] TypeError: 字符串索引必须是整数

P4 或我的代码是否有问题。

0 投票
1 回答
1068 浏览

python - P4 python连接断开SSL错误

我已经在使用 P4V 客户端,一切都很好,没有连接错误。

错误: 当我尝试从 Python 执行 p4 命令时出现一些 SSL 错误。而且是随机的,如果我重新运行脚本,每次都不会抛出错误

从客户端,输出是:

SSL 接收失败。\n读取: 操作成功: WSAECONNRESET

从服务器端日志,我得到:

来自 90.XX.XX.93:53929 的连接中断。SSL 接收失败。读取:对等方重置连接:对等方重置连接

在 le P4 Connection with 之后p4.connect(),我运行一个p4.run_trust()命令,结果似乎还可以

信任已经建立

这个错误是在做一个p4 fetch, 的p4 edit myfile

配置

我正在从运行 P4V 客户端的同一台计算机上启动我的 python 脚本。我正在使用相同的配置(用户、工作区、url+port > ssl:p4.our-url.domain:1666)。无论是否启动 P4V 客户端,都会发生 SSL 错误。SSL 证书是在 Perforce Server 安装和配置期间生成的。我们的子域 p4.our-domain 后面没有 apache 服务器,所以我无法使用在线 SSL 检查器测试 SSL 证书(我的网络知识在那里达到了极限)

当我这样做时,p4 info有一个“对等地址”,基本上是我的 IP 和一个随机生成的端口(53929)。这个端口是什么?我需要设置固定端口并重定向到运行脚本的计算机吗?

您有任何想法该错误来自哪里吗?这是一个糟糕的服务器配置吗(奇怪的原因是办公室里的每个 p4v 客户端都可以工作)。我是否需要为 P4Python 脚本的所有用户建立和分发新证书?

Python 3.5.4

PyOpenssl 18.0.0

P4Python 2017.2.1615960

非常感谢您的任何建议。

山姆斯塔福德建议的答案

山姆是对的,看来我超时了。我在脚本启动时打开 P4 连接并连接到服务器,然后在使用 p4 fetch/add/submit 之前启动处理以生成文件。这是在与服务器断开连接时重新连接的解决方法

如果您想保持连接打开,这很有效。我想避免超时的最好P4.connect()方法是在 any 之前调用方法P4.run_*method*()并在之后关闭它。而不是等待超时重新启动连接。

0 投票
2 回答
465 浏览

python - P4Python 运行方法不适用于空文件夹

我想在 Perforce 仓库中搜索文件。我从 python 脚本执行此操作并使用p4pythonlibrary 命令:

只要myfolder包含一些文件,它就可以正常工作。我得到一个 pythonlist作为返回值。但是当程序中没有文件时myfolder停止运行并且没有错误信息显示。我的目标是得到一个空的 python list,这样我就可以看到这个文件夹不包含任何文件。

有人有什么想法吗?p4我在文件文档和 StackOverflow 上找不到信息。