python setup.py开发以覆盖已安装的版本

时间:2011-06-01 12:57:57

标签: python distutils

我正在开发一个包。此软件包已作为驻留在site-packages目录中的egg文件安装,egg path添加到easy-install.pth。

我现在意识到我的包中有一个错误,所以我调用了python setup.py develop来连接开发目录。 source dir的路径已正确添加到easy-install.pth,但它已添加最新,这意味着我将首先选择并导入已安装的egg,并发出import mypackage

如何让开发挂钩覆盖已安装的包?

最终,如果我做错了,请说明解决此用例的正确策略是什么。

3 个答案:

答案 0 :(得分:5)

如果你使用pip,

sudo pip uninstall packagename

将在确认后提示easy-install.pth中的所有包并删除所有包。

然后,您可以执行setup.py develop,以便只有开发分支位于python路径中。

如果您需要同一个库的多个版本,最好的选择是使用virtualenv(和virtualenvwrapper作为bash助手)。

另外值得一提的是,如果您想要最简单的解决方案而没有任何网络流量(我无法想象为什么),您可能也只是来自网站包的符号链接,例如:

sudo ln -fs ~/django_registration/registration /usr/lib/python2.6/dist-packages/django_registration

如果你正在使用pip进行软件包安装(为什么不呢?)你也可以通过以下方式将开发版本放到easy-install.pth中:

pip install -e hg+http://bitbucket.org/ubernostrum/django-registration/#egg=django_registration

根据评论进行更新:

如果只想在当前模块中使用新包,可以手动修改sys.path,如

sys.path.insert(1,'/path/to/package')

因此,导入从正确的位置开始。

答案 1 :(得分:3)

您可以要求pip使用--upgrade覆盖当前已安装的软件包,pip可以从本地目录安装,以便:

easy_install pip # if you don't have pip installed
pip install /your/package --upgrade

答案 2 :(得分:1)

我会使用虚拟环境,即一个独立的Python安装,不受系统范围内安装的发行版的影响。请参阅PyPI上的virtualenv和virtualenvwrapper。