我有一个正在开发的包.此软件包已作为驻留在site-packages目录中的egg文件安装,egg path添加到easy-install.pth.
我现在意识到我的包中有一个bug,所以我调用python setup.py develop了挂钩开发目录.source dir的路径已正确添加到easy-install.pth,但它已添加到最新版本,这意味着将首先选择并导入已安装的egg import mypackage.
如何让开发挂钩覆盖已安装的包?
最后,如果我做错了,请解释一下解决这个用例的正确策略是什么.
如果你正在使用pip,
sudo pip uninstall packagename
Run Code Online (Sandbox Code Playgroud)
将在确认后提示easy-install.pth中的所有包并删除所有包.
然后,您可以执行setup.py develop以便只有开发分支位于python路径中.
如果你需要同一个库的多个版本,最好的选择是使用virtualenv(以及virtualenvwrapper作为bash助手).
另外值得一提的是,如果你想要最简单的解决方案而没有任何网络流量(我无法想象为什么),你可能也只是来自网站包的符号链接,例如:
sudo ln -fs ~/django_registration/registration /usr/lib/python2.6/dist-packages/django_registration
Run Code Online (Sandbox Code Playgroud)
如果你正在使用pip进行软件包安装(为什么不呢?)你也可以通过以下方式将开发版本放到easy-install.pth中:
pip install -e hg+http://bitbucket.org/ubernostrum/django-registration/#egg=django_registration
Run Code Online (Sandbox Code Playgroud)
根据评论更新:
如果只想在当前模块中使用新包,可以手动修改sys.path,如
sys.path.insert(1,'/path/to/package')
Run Code Online (Sandbox Code Playgroud)
因此,导入从正确的位置获取.