【发布时间】:2015-08-21 15:13:40
【问题描述】:
我想在运行pip uninstall 时运行一些自定义代码,清理安装时创建的文件。我该怎么办?
我在 setup.py 中使用以下代码运行了自定义安装代码:
from setuptools import setup
from setuptools.command.install import install
class CustomInstallCommand(install):
def run(self):
#Custom code here
install.run(self)
...
setup(
...
cmdclass = {
'install':CustomInstallCommand
}
)
但尝试对 setuptools.command.uninstall 或 from setuptools.command.install import uninstall 进行类似操作会失败,因为这些模块/名称不存在。
【问题讨论】:
-
不应该通过卸载删除所有文件吗?请更详细地描述您要解决的确切问题。
-
当然 - 我正在将 phantomjs 下载到一个临时目录以便能够使用它,因为据我所知,它只能通过 NodeJS (stackoverflow.com/a/15699761/1040915) 获得,而不是通过pip 依赖项?
-
@scubbo:在
setup.py中通常不鼓励这样做,因为它很脆弱并且依赖于平台并会导致问题。这主要是因为没有 Python 方法来表达本机依赖关系。相反,只需在 README 中记录本机依赖项安装说明。然而,Distutils 工作组正在处理这个问题:mail.python.org/pipermail/distutils-sig/2015-April/026114.html -
否则你会变成这样的恐怖:github.com/psycopg/psycopg2/blob/master/setup.py
-
知道了。所以,如果我理解正确,没有批准/推荐的方式来为具有非 pip 依赖项的 python 模块提供“单命令安装”(例如,如果我想为非开发人员提供一个模块)?这令人失望。感谢您的链接,我会感兴趣地关注讨论。
标签: python pip setuptools setup.py