编辑由pip安装的包

chr*_*ris 3 python pip

我正在尝试编辑我通过pip安装的软件包,名为py_mysql2pgsql(我将db从mysql转换为postgre时出错,就像这样.

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

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

谢谢

jpm*_*c26 7

TL; DR:

修改到位是危险的.修改源,然后从修改后的版本安装它.

细节

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

如果要修改源代码,正确的做法是修改源代码并构建新的自定义包或仅从源代码安装.py-mysql2pgsql提供了执行源安装的说明:

> git clone git://github.com/philipsoutham/py-mysql2pgsql.git
> cd py-mysql2pgsql
> python setup.py install
Run Code Online (Sandbox Code Playgroud)

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

既然你已经发现了软件中的一个错误,我也强烈建议你在Github上分配它并在修复后提交一个pull请求.如果这样做,只需将存储库URL更改为fork即可使用上述安装说明.如果您不分叉,至少提出问题并描述修复它的更改.

备择方案:

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


Tad*_*sen 7

只需打印出.__file__模块的属性:

>>> import numpy
>>> numpy.__file__
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numpy/__init__.py'
Run Code Online (Sandbox Code Playgroud)

显然,路径和特定包对您来说会有所不同,但这是在 python 中跟踪任何模块的源文件的非常简单的方法。


Cor*_*erg 0

py_mysql2pgsql包托管在 PyPI 上:https ://pypi.python.org/pypi/py-mysql2pgsql

如果您想要该特定版本的代码,只需从 PyPI 下载源 tarball (py-mysql2pgsql-0.1.5.tar.gz)

开发托管在 GitHub 上:https ://github.com/philipsoutham/py-mysql2pgsql