编辑pip安装的包

2024-03-06

我正在尝试编辑通过 pip 安装的一个名为 py_mysql2pgsql 的包(将数据库从 mysql 转换为 postgre 时出现错误,就像this https://stackoverflow.com/questions/26008398/error-transferring-database-from-mysql-to-postgres-using-mysql2pgsql.

但是,当我到达文件夹 /user/local/lib/python2.7/dist-packages/py_mysql2pgsql-0.1.5.egg-info 时,我找不到该包的源代码。我只找到 PKG-INFO 和文本文件。

如何找到包(或者特别是这个包)的实际源代码?

Thanks


TL;DR:

就地修改是危险的。修改源码和then从修改后的版本安装它。

Details

pip 是一个管理包安装的工具。您不应修改软件包安装期间创建的文件。最好的情况是,这样做意味着 pip 会相信某个特定版本的软件包已安装,但实际上并未安装。这不会与升级功能很好地交互。我怀疑 pip 会覆盖您的自定义设置,永远丢弃它们,但我尚未确认。另一种可能性是它检查文件是否已更改,如果更改则抛出错误。 (我认为这不太可能。)它还会误导系统的其他用户。他们看到您安装了一个软件包,但实际上并没有指示该版本;你有一个定制版本。如果他们尝试在其他地方安装未修改的版本或者他们期望安装的版本出现某些特定行为,这可能会导致混乱。

如果你想修改源代码,正确的做法是修改源代码并构建一个新的自定义包或仅从源代码安装。py-mysql2pgsql https://github.com/philipsoutham/py-mysql2pgsql提供执行源安装的说明:

> git clone git://github.com/philipsoutham/py-mysql2pgsql.git
> cd py-mysql2pgsql
> python setup.py install

您可以克隆源、修改它,然后安装,而无需使用 pip。如果您需要在内部重新分发该包,您也可以构建自己的自定义版本的包。该项目使用 setuptools 来构建其包,因此您只需要熟悉 setuptools 即可利用它们setup.py文件。确保以这种方式安装不会在 pip 的包列表中创建任何误导性条目。如果是这样,要么找到一种方法来确保条目更清晰,要么找到替代安装方法。

由于您发现了软件中的错误,我还强烈建议您在 Github 上分叉它,并在修复后提交拉取请求。如果这样做,您只需将存储库 URL 更改为您的分支即可使用上述安装说明。如果您不分叉它,至少提交一个问题并描述修复它的更改。

备择方案:

  • 您可以将所有源代码复制到项目中,在那里进行修改,然后将修改后的版本与其余代码一起分发。 (如果这样做,请确保没有违反许可。)
  • 您也许能够在运行时解决您的问题。如果团队中的其他人可能没有预料到行为的改变,那么对模块进行猴子修补是有一点风险的,但它可以用于模块行为的全局修改。您还可以创建一些额外的代码wraps有错误的代码:它可以接受输入,调用有错误的代码,并防止或处理错误(例如,修改输入以使其工作或捕获异常并处理它等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编辑pip安装的包 的相关文章

随机推荐

  • 连接 3 个字符串并返回指向新字符串 C 的指针

    我想知道是否有人可以帮助我 我正在尝试连接 3 个字符串并返回指向新字符串的指针 我似乎不知道如何使用strncat代替strcat and strncpy代替strcpy 我只学习 C 所以任何帮助将不胜感激 char concatena
  • android Google Play 警告:SSL 错误处理程序漏洞

    我在我的应用程序中使用 gorbin ASNE SDK 我最近收到一封来自 Google 的电子邮件 主题如下 Google Play 警告 SSL 错误处理程序漏洞 在这封电子邮件中 Google 解释说我的应用程序有一个 WebView
  • 在全屏模式下调整框架组件的大小

    我希望我的框架组件始终在屏幕中进行调整 无论屏幕尺寸如何 我在笔记本电脑 小屏幕 中绘制框架 当我在另一台具有大屏幕的机器 jar 文件 中运行应用程序时 框架组件不会重新调整大小 当我在任何机器上将框架置于全屏模式时 如何使框架调整其组件
  • Zend Framework 中处理会话的最佳方法

    因此 我在 Zend 框架中启动 并希望实现站点范围的 用户 会话 我可以从应用程序中的所有模块 控制器轻松访问它 我想 我应该在库中创建一个新的命名空间并扩展控制器 例如 class MYCUSTOMLIB Controller Acti
  • MySQL 查询月份年份

    我有一个包含以下字段的表 id int name varchar dob datetime 现在我需要一个可以同时匹配月份和年份的查询 我现在使用的是 select from users where month dob 12 and yea
  • Scala Spark Encoders.product[X](其中 X 是案例类)不断给出“No TypeTag available for X”错误

    我正在 Scala 工作表中使用 Intellij Idea 我想为 scala 案例类创建一个编码器 从互联网上的各种帖子中 我找到了使用 Encoders product 的建议 但它从来没有对我有用 下面的代码 import org
  • 如何将事件绑定到 Canvas 项目?

    如果我使用画布来显示数据 并且希望用户能够单击画布上的各个项目以获得更多信息或以某种方式与之交互 那么最好的方法是什么 在线搜索我可以找到有关如何将事件绑定到标签的信息 但这似乎比我想要的更间接 我不想用标签对项目进行分组 而是当用户单击画
  • 如何在 XSLT 转换中为元素的默认数据类型添加属性“type”

    例如 输入 XML
  • 从 Python 生成图形的最简单方法? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 Python 处理填充有我想要运行计算的数据的 CSV 文件 然后绘制图表 我正在寻找一个可
  • 在 C++ 中传递对象所有权

    表明一个对象想要获得另一个对象的所有权的最佳方式是什么 到目前为止 我一直在使用std auto ptr在公共接口中 因此客户端知道该接口想要获取所传递对象的所有权 然而 最新的 GCC 告诉我auto ptr已弃用 所以我想知道推荐什么
  • 如何使用 VisPy 库实时绘图?

    我编写了一个脚本来模拟流行病的演变 使用图表和散点图 我尝试了几个库来实时显示结果 8 个国家 x 500 个粒子 Matplotlib 不够快 PyQtGraph 更好但仍然不够快 OpenGL 很好 但我没有找到如何在 2D 中有效地使
  • 如何在屏幕旋转时保持recyclerView的滚动位置

    我正在使用 gridlayoutManager 填充 recyclerView 现在我想保存屏幕旋转的滚动位置 我尝试使用 onSaveInstanceState 和 onRestoreInstanceState 来执行此操作 如本文所示
  • WPF DataGrid - 如何在按下 Tab 键后将键盘焦点移动到新添加的行

    如果我们在最后一行的最后一列上按 Tab 键 WPF DataGrid 将添加一个新行 但添加新行后 焦点将移至网格的顶行 我们如何确保焦点移动到新行的第一列 你可以尝试类似的东西 this SelectRowCell this Items
  • php“curl”不起作用[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 从 Excel 工作簿 VSTO 调用 Excel 加载项函数

    我想在 Excel Add In 2007 解决方案中创建一个方法 可以从我的 Excel Workbook 2007 解决方案中调用该方法 我解释一下 我想从Excel工作簿2007解决方案的代码隐藏文件中调用Excel加载项的方法 我不
  • 读取大型制表符分隔文件分块时出现异常

    我有一个 350MB 制表符分隔的文本文件 如果我尝试将其读入内存 则会出现内存不足异常 所以我正在尝试一些类似的事情 即只阅读几列 import pandas as pd input file and path r C Christian
  • Python 256位哈希函数,带数字输出

    我需要一个具有 256 位输出 如 long int 的哈希函数 首先 我认为我可以使用 hashlib 中的 SHA256 但它有一个字符串输出 我需要一个数字来计算 将 32 字节字符串转换为 long 也可以 但我没有找到任何东西 在
  • 快速文件复制并取得进展

    我正在为 Linux 编写一个 SDL 应用程序 它可以从控制台运行 无 X 服务器 我拥有的一个功能是文件复制机制 它将特定文件从 HDD 复制到 USB 闪存设备 并在 UI 中显示此复制的进度 为此 我使用简单的 while 循环并按
  • 当嵌入类型具有 UnmarshalJSON 时,json.Unmarshal 失败

    我正在尝试解组具有嵌入类型的结构 当嵌入类型具有 UnmarshalJSON 方法时 外部类型的解组失败 https play golang org p Y Tt5O8A1Q https play golang org p Y Tt5O8A
  • 编辑pip安装的包

    我正在尝试编辑通过 pip 安装的一个名为 py mysql2pgsql 的包 将数据库从 mysql 转换为 postgre 时出现错误 就像this https stackoverflow com questions 26008398