我正在尝试编辑通过 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(使用前将#替换为@)