【问题标题】:Using libraries in in-proc hook for Hg/TortoiseHg在 Hg/TortoiseHg 的进程内挂钩中使用库
【发布时间】:2015-10-30 14:05:02
【问题描述】:

我正在尝试为 Hg/TortoiseHg 创建一个用 Python 编写的 inproc 挂钩。它应该解析提交消息并基于它对 JIRA 进行自定义操作。 我正在尝试使用 http://jira.readthedocs.org/en/latest/#python-jira 作为 jira API。

当我使用python <myscript>.py 测试我的脚本时效果很好。但是我在将 jira api 安装到 TortoiseHg 时遇到问题。对于我当前的 python 实例,我只使用了pip install jira。但似乎 TortoiseHg 有自己的 python 实例。

如何将jira 安装到TortoiseHg 中?

我尝试了sys.path.append("myfolder"),然后将myfolder 添加到我的项目中并在那里复制jira 模块的源代码。然后我做了from client import JIRA,看起来JIRA 试图加载,但它的依赖似乎失败了(我看到No module named six.moves.urllib.parse 错误)。所以这似乎不是一种方式。

我对 python 的经验很少,所以我可能会错过一些明显的东西。还有其他选择吗?

【问题讨论】:

    标签: python mercurial jira tortoisehg python-jira


    【解决方案1】:

    简而言之:检查以确保导入所有需要的非 jira 库。

    长篷: 据我了解,您的程序在通过 python 运行脚本时可以正常工作,这意味着您的脚本可以正常工作。我可以看到发生的问题是您没有将正确的库导入 TortoiseHg。如果您查看 python 文档有一个需求部分,请查看您是否正在使用这些库中的任何一个,如果您包含这些库。我还在某处读到,HTTP 管理是由一些 Python 自己的内置库处理的。

    【讨论】:

    • 我知道我缺少库。我实际上在那里想念Jira。问题是我不知道如何在那里安装它。现在我通过运行 python 的第二个实例解决了这个问题(这是我的 python,所以它运行正常),但这不是一个长期的解决方案。
    • 在这种情况下检查 TortoiseHg 使用的 python 版本,因为你可能知道低于 python 2.7 的任何东西都不会工作。您可能还应该检查您的 Mercurial 版本,因为据我了解,它也运行 python。 还可以查看此链接,看看它是否适合您: stackoverflow.com/questions/13685159/…
    • 我正在使用 TurtoiseHg,它同时嵌入了 hgpython 2.7。我不知道他们为什么这样做,但他们做到了。这就是问题所在。我已经尝试了您提供的答案的解决方案,不幸的是它不起作用。将 sys.path.append 放入本地 Python 库文件夹是个好主意,但由于某种原因,它一直抱怨它错过了 utils 库,我确信我有
    • 总的来说,我开始觉得我的想法是将本地 python 作为单独的进程运行,然后将输出返回是唯一可行的解​​决方案
    • 当您使用sys.path.append 时,您还指向哪个位置?您是指向 python Lib/site-packages 文件夹或 jira-master/jira 中的 pip 安装吗?此外,如果您知道 TurtoiseHg 正在使用 python 2.7,您可能想尝试在外部运行具有相同版本的 py 脚本,因为您的脚本可能在 3.5 中运行,但在 2.7 中不运行。
    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 2023-03-03
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多