【问题标题】:Removing python module installed in develop mode删除以开发模式安装的 python 模块
【发布时间】:2011-04-06 02:35:39
【问题描述】:

您好,我正在尝试使用 setuptools 进行 python 打包并测试我在开发模式下安装了模块。 即

python setup.py develop

这已将我的模块目录添加到 sys.path。现在我想删除模块有什么办法吗?

提前致谢

【问题讨论】:

  • 开始使用pip或其他具有卸载能力的管理器来管理python包。
  • @Tomasz 你如何用pip 做相当于python setup.py develop 的操作?
  • pip install -e .
  • 'pip' 不是这个问题的正确答案。使用“pip”安装您正在开发的项目以便运行或使用它意味着您每次修改源代码时都必须重新安装。正确的方法是使用“setup.py develop”作为原始问题的状态。
  • @JonathanHartley 这完全是错误的; pip 有一个--editable(或-e)参数,其行为为roughly equivalently to setuptools' develop。我认为--editable 可能比您的评论更新,但不是——快速搜索 GitHub 上的 pip repo 会发现早在 2009 年的提交中就会引用可编辑的内容。此外,我看到 Tomasz Wysocki 已经指出了这一点在您发表评论之前!

标签: python setuptools


【解决方案1】:

develop 使用--uninstall-u 选项,即:

python setup.py develop --uninstall

这会将其从 easy-install.pth 中删除并删除 .egg-link。它唯一不做的就是删除脚本(还)。

【讨论】:

  • 请注意,如果您的开发版本安装了一些可执行文件,并且您在 setup.py 中更改了它们,您应该手动删除它们。
  • 我按照解释运行它,输出中没有错误,但我仍然能够全局导入我的开发包,它似乎还没有被删除。编辑:我知道为什么,我必须像安装期间那样使用--user 选项运行它:python setup.py develop --uninstall --user
  • 我认为这不安全,因为在开发(例如)重命名模块时情况可能会发生变化。您需要手动删除所有内容。
  • @norok2 必须运行哪些手动命令才能删除这些可执行文件。据我所知,上述方法适用于某些版本的 python/pip,但我不确定哪些版本。
  • @CharlieParker rmdel 取决于您的操作系统。我的意思是,如果您在安装时有一些可执行文件,然后在您的setup.py 中更改它们的名称(或删除它们),那么setup.py 将不再知道它们(无论您的pip / python 版本,你需要手动处理它们。它们通常位于 POSIX(阅读 Linuxes、BSD、MacOS X)系统上的一些 bin 目录中,不记得 Win 了。
【解决方案2】:

编辑站点包目录中的 easy-install.pth 并删除指向该包的开发版本的行。

【讨论】:

  • 是的,我确实这样做了,还有一个文件名为 package-egg-link 或我删除的东西,现在对模块的引用被删除了谢谢:)
  • "setup.py develop --uninstall" 为您执行此操作,请参阅@pjeby 的回答
  • develop --uninstall 失败时这对我有用,因为我将一个项目一分为二,而错误的一个仍保留在原始目录中。
【解决方案3】:

我之前也遇到过类似的问题。我所做的是加载 Python shell,导入模块,然后打印其 __file__ 属性。从那里我将删除正在关联的文件夹或文件。

您可能想要研究的是使用virtualenv 这个系统允许您创建一个独立于您的系统的python 实例。您在此实例中安装或使用的任何模块都是自包含的,包括模块的版本。

我现在将所有项目都保存在自己包含的 virtualenv 中,这样我就可以安装和使用我想要的任何模块,而不必担心会搞砸其他项目的模块。

【讨论】:

  • 好吧,下次我玩软件包时,我会使用它,这样我就不会搞砸我的系统 Python。感谢您的信息
猜你喜欢
  • 1970-01-01
  • 2014-11-29
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
相关资源
最近更新 更多