python setup.py develop 覆盖已安装的版本

标签 python distutils

我有一个正在开发的包。这个包已经作为 egg 文件安装在 site-packages 目录中,egg 路径添加到 easy-install.pth。

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

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

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

最佳答案

如果你正在使用 pip,

sudo pip uninstall packagename

将提示输入 easy-install.pth 中的所有包,并在确认后将其全部删除。

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

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

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

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')

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

关于python setup.py develop 覆盖已安装的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6201503/

相关文章:

python - "raise"后跟条件语句(python)

python - PySpark 窗口函数 - 用以前的非零值填充数据

python - 找出用于安装当前包的 Python?

python - 如何在不安装的情况下读取Python包元数据?

python - 我如何使用 setuptools 或 distutils 来分发脚本而不是 Python 包?

python - 如何找到失败的 python 导入路径?

python - 由于夹具加载问题,Django 单元测试失败

python - 如何加载 csv 文件并将其内容存储到 python 中的 (numpy) 数组中?

Python3 共享扩展不链接库依赖

python - 将 Cython 标记为构建依赖项?