我正在开发一个包。此软件包已作为驻留在site-packages目录中的egg文件安装,egg path添加到easy-install.pth。
我现在意识到我的包中有一个错误,所以我调用了python setup.py develop
来连接开发目录。 source dir的路径已正确添加到easy-install.pth,但它已添加最新,这意味着我将首先选择并导入已安装的egg,并发出import mypackage
。
如何让开发挂钩覆盖已安装的包?
最终,如果我做错了,请说明解决此用例的正确策略是什么。
答案 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。