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

Ste*_*ini 15 python distutils

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

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

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

最后,如果我做错了,请解释一下解决这个用例的正确策略是什么.

Lak*_*sad 5

如果你正在使用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)

因此,导入从正确的位置获取.