2024-04-26 07:37:55 发布
网友
我正在尝试编辑一个通过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的包列表中创建任何误导性条目。如果是这样,要么找到一种方法来确保条目更加清晰,要么找到另一种安装方法。
setup.py
既然您发现了软件中的一个bug,我强烈建议您在Github上分叉它,并在修复后提交一个pull请求。如果这样做了,只需将存储库URL更改为fork,就可以使用上述安装说明。如果不分叉,至少要提交一个问题并描述修复它的更改。
备选方案:
只需打印出模块的.__file__属性:
.__file__
>>> import numpy >>> numpy.__file__ '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numpy/__init__.py'
显然路径和特定的包对您来说是不同的,但是这是跟踪python中任何模块的源文件的非常简单的方法。
py_mysql2pgsql包托管在PyPI上:https://pypi.python.org/pypi/py-mysql2pgsql
py_mysql2pgsql
如果您想要特定版本的代码,只需从PyPI下载源tarball(py-mysql2pgsql-0.1.5.tar.gz)
开发托管在GitHub上:https://github.com/philipsoutham/py-mysql2pgsql
TL;博士:
就地修改是危险的。修改源代码,然后从修改后的版本安装它。
细节
pip是一个管理软件包安装的工具。不应修改包安装期间创建的文件。充其量,这样做意味着pip会相信某个特定版本的软件包是在没有安装的情况下安装的,这不会与升级功能很好地交互。我怀疑pip会覆盖你的定制,永远丢弃它们,但我还没有确认。另一种可能性是,它检查文件是否已更改,如果已更改,则抛出错误。(我认为不太可能)这也误导了系统的其他用户。他们看到您已经安装了一个包,但实际上并没有指定该版本;您有一个自定义版本。如果他们试图将未修改的版本安装到其他地方,或者希望从安装的版本中获得某些特定行为,这可能会导致混淆。
如果你想修改源代码,正确的做法是修改源代码,要么构建一个新的自定义包,要么直接从源安装。py-mysql2pgsql提供了执行源安装的说明:
您可以克隆源代码,对其进行修改,然后在不使用pip的情况下进行安装。如果需要在内部重新分发包,也可以构建自己的自定义版本。这个项目使用setuptools来构建它的包,因此您只需要熟悉setuptools就可以使用它们的
setup.py
文件。确保这样安装不会在pip的包列表中创建任何误导性条目。如果是这样,要么找到一种方法来确保条目更加清晰,要么找到另一种安装方法。既然您发现了软件中的一个bug,我强烈建议您在Github上分叉它,并在修复后提交一个pull请求。如果这样做了,只需将存储库URL更改为fork,就可以使用上述安装说明。如果不分叉,至少要提交一个问题并描述修复它的更改。
备选方案:
只需打印出模块的
.__file__
属性:显然路径和特定的包对您来说是不同的,但是这是跟踪python中任何模块的源文件的非常简单的方法。
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
相关问题 更多 >
编程相关推荐