使用python包的本地副本,而不是安装在站点包中的副本

使用python包的本地副本,而不是安装在站点包中的副本,python,Python,我已经在我的站点包目录中安装了一个基于Python的包。然而,我正在努力学习代码是如何工作的,所以我想通过输入大量的打印语句来对其进行一些修改,这样我就可以理解代码在做什么。但在一天结束时,我想要一个干净的安装没有我所有的黑客在它 当然,我可以将原始文件复制到其他地方,进行一些黑客攻击,然后在最后将所有原始文件复制回来。但那真的很乏味。至少,我希望安装Python包的本地副本,然后让Python脚本优先使用该副本(可能通过脚本顶部的适当语句)。但也许这甚至不是进行python开发/黑客攻击的最佳

我已经在我的站点包目录中安装了一个基于Python的包。然而,我正在努力学习代码是如何工作的,所以我想通过输入大量的打印语句来对其进行一些修改,这样我就可以理解代码在做什么。但在一天结束时,我想要一个干净的安装没有我所有的黑客在它

当然,我可以将原始文件复制到其他地方,进行一些黑客攻击,然后在最后将所有原始文件复制回来。但那真的很乏味。至少,我希望安装Python包的本地副本,然后让Python脚本优先使用该副本(可能通过脚本顶部的适当语句)。但也许这甚至不是进行python开发/黑客攻击的最佳方式

解决我的问题最好的办法是什么?我希望能够破解软件包(并使用该软件包),但不会弄乱我的干净版本。

看一看。基本上,您可以设置一个本地python环境,在这个环境中,您可以安装任何您喜欢的东西,而不必干扰系统环境。

这就是python工具的用途。它允许您使用一组不同于系统安装的包创建本地Python环境。例如,我可以这样做:

$ virtualenv myenv
$ . myenv/bin/activate
$ pip install nifty-module
激活
脚本修改您的
路径
,以便任何以以下内容开头的脚本:

#!/usr/bin/env python

将使用虚拟环境中的Python,而不是系统Python,并将看到在该环境中安装的模块。

给出的virtualenv建议是正确的,取决于您的实际软件包,您甚至可以超出此范围,而不必在virtualenv中弄乱站点软件包

如果软件包基于setuptools,则

$ python setup.py develop

在源代码的工作副本中,它不会被安装,而是挂接到指向工作副本的virtualenv中。优点:您可以在定义良好且非易失性的位置编辑(例如,使用GIT或软件包维护人员使用的任何SCM回滚)文件。

实际上,按照他们的说明,我的软件包就是这样安装的。我刚刚注意到我的包实际上不在站点包中,但是那里有一个名为[mypackage].egg链接的文件,它列出了我的本地安装目录到站点包中的目录。我想这就是它的工作原理?我大概可以使用git checkout将我的更改恢复到实际发行版?太好了。谢谢我将您的回答转换为对我个人最有帮助的答案(根据stackexchange。感谢您提供的详细信息)。而@deets答案实际上对我来说最简单(因为我不知道
setup.py develope
做了什么),这个答案似乎是最普遍的,而且virtualenv看起来是未来工作中非常有用的包。