gpt4 book ai didi

python - 编辑pip安装的包

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:43 24 4
gpt4 key购买 nike

我正在尝试编辑通过 pip 安装的包,称为 py_mysql2pgsql(将我的数据库从 mysql 转换为 postgre 时出现错误,就像 this 一样。

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

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

谢谢

最佳答案

长话短说:

就地修改是危险的。修改源代码,然后从修改后的版本安装它。

详情

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

如果您想修改源代码,正确的做法是修改源代码,然后构建一个新的自定义包或直接从源代码安装。 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 上进行 fork ,并在修复后提交拉取请求。如果这样做,您只需将存储库 URL 更改为您的分支即可使用上述安装说明。如果你不 fork 它,至少要提交一个问题并描述修复它的更改。

备选方案:

  • 您可以将所有源代码复制到您的项目中,在那里进行修改,然后将修改后的版本与您的其余代码一起分发。 (如果这样做,请确保您没有违反许可。)
  • 您也许可以在运行时解决您的问题。如果您团队中的其他人可能不期望行为发生变化,则对模块进行猴子修补会有 pip 风险,但可以对模块的行为进行全局修改。您还可以创建一些额外的代码来包装错误代码:它可以接受输入,调用错误代码,并防止或处理错误(例如,修改输入以使其工作或捕获异常及其处理等)。

关于python - 编辑pip安装的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com