【问题标题】:Need to change source code of an installed library需要更改已安装库的源代码
【发布时间】:2016-09-06 11:00:27
【问题描述】:

我正在使用 Python3.4。我已经使用 pip 从 GitHub 安装了某个“itunespy”库,以使用 iTunes API。
(https://github.com/spaceisstrange/itunespy)

我现在可以通过控制台访问它

import itunespy

除了图书馆只通过 iTunes Api 搜索美国商店,而我需要访问英国商店。我查看了代码,发现我只需要更改两行即可解决我的问题。

请告诉我如何访问和更改已安装库的源代码。

谢谢。

【问题讨论】:

  • itunespy.__file__ 将显示导入模块/包的路径。

标签: python-3.x github


【解决方案1】:
  • 分叉存储库
  • 克隆分叉的存储库
  • 进行更改并推送到您的遥控器(通常是来源)
  • 您可以从 fork 进行 pip 安装

【讨论】:

  • 我会添加一些关于提交拉取请求以建议包作者合并您的更改的内容,因为听起来这个更改通常很有用。否则,分叉没有多大意义 - 您不妨克隆它并在本地编辑它。
  • 您的 PR 可能需要更改以使其可配置。 @David 克隆和编辑的问题是,您需要提交和版本控制外部模块。否则,将来的安装将丢失更改。
  • 分叉的一个缺点是,您可能需要使用上游(通常)远程更新您的分叉。否则,对原始模块的更改不会反映在您的 fork 中。
  • re: (2 cmets up) 是的,当然你应该提交你的更改,并跟上新的上游更改。但无论您是 fork 并克隆 fork 还是只克隆原始存储库,这同样适用。
【解决方案2】:

我看了source code,然后:

a) 您显然可以更改本地复制文件中的源代码

b) 您可以在运行时修补这些常量,例如将这种类型的代码添加到您的主代码中:

import itunespy
itunespy.base_search_url = "NEW_VALUE"
itunespy.base_lookup_url = "NEW_VALUE"

c) 库 API 似乎提供了国家/地区关键字参数,因此您不必执行上述任何这些技巧。只需这样做:

itunespy.search_track('something', country='UK')

使用此关键字参数,搜索应按预期进行,无需对源代码进行任何修改。

【讨论】:

    【解决方案3】:

    您真的要更改源代码吗? 改变你的实现怎么样?

    • 从类继承
    • 用您自己的方法覆盖/重载他们的方法
    • 使用继承的类及其方法

    专业人士:如果原始库中有更改,您将在更新时随身携带(安全补丁等),但您的覆盖/重载方法仍然是您使用的方法。

    否则,如果您真的想更改源代码,请从 github 获取一个分支并根据需要更改源代码,如 dolftax 所述

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 2021-10-03
      • 1970-01-01
      • 2012-03-01
      • 2013-07-20
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多