从 Ubuntu 中的 pip install 包中找到源代码
Posted
技术标签:
【中文标题】从 Ubuntu 中的 pip install 包中找到源代码【英文标题】:Locate source code from pip install packages in Ubuntu 【发布时间】:2017-12-30 03:39:23 【问题描述】:我已经在 Ubuntu 中安装了一些带有 pip 的软件包。但是,我想从这些包中更改已安装代码的某些部分。在 Windows 中很容易做到这一点,从 Pycharm 使用提供的链接。如何从包中找到源代码并进行更改?我的导入代码:
from metric_learn import LSML_Supervised
【问题讨论】:
可以导入包,然后运行package.__file__
获取位置。
【参考方案1】:
一般来说,模块和包都有一个__file__
属性,您可以使用它来找出它们是从哪里加载的:
>>> import jinja2
>>> jinja2.__file__
'/usr/local/anaconda3/envs/felix_backend/lib/python3.6/site-packages/jinja2/__init__.py'
编辑 20 年 11 月 20 日 如果提到 pip
通常在(有时是虚拟的)环境的 site-packages
目录中安装软件包,但 @987654326 @ 选项可用于从目录或 URL 以所谓的 editable 模式安装模块或包。来自pip install --help
:
-e, --editable <path/url> Install a project in editable mode (i.e.
setuptools "develop mode") from a local project
path or a VCS url.
这通常通过克隆一个 git 存储库(大多数开源软件可以从 Github 或类似来源以这种方式访问)然后使用pip install -e
安装它来使用。环境的解释器将使用给定目录中的代码,这些代码被链接到而不是复制到环境的site-packages
目录中。
导入系统相当复杂,但如果模块的 __file__
属性不能回答您的问题,请参阅 import-related module attributes 上的文档。
【讨论】:
我的代码来自 metric_learn import LSML_Supervised。当我尝试打印 LSML_Supervised 时,我得到了site-packages
是手动构建python包的目标目录。当你从源代码构建和安装python包时(使用distutils,可能通过执行python setup.py install
),你会默认在site-pacakges中找到已安装的模块。
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
如果你真的怀疑默认位置,那么,
>>> import django
>>> print django.__path__
['/Library/Python/2.7/site-packages/django']
【讨论】:
我的代码如下来自 metric_learn import LSML_Supervised。不知道我应该为 path 准备什么 好像python2.7中不存在path属性以上是关于从 Ubuntu 中的 pip install 包中找到源代码的主要内容,如果未能解决你的问题,请参考以下文章
python pip 安装包 记录 ubuntu and windows