使用 pip 删除 setup.py data_files 中的文件
Removing files in setup.py data_files using pip
我正在为我自己的 Linux 应用程序编写 setup.py
。我在 /usr/share/applications
中添加了一个桌面条目文件 myapp.desktop
。这是我的 setup.py
:
setup(...,
data_files=[
('/usr/share/applications', ['myapp.desktop']),
('/usr/share/pixmaps', ['myapp.png'])]
)
我还在 MANIFEST.in
中包含 myapp.desktop
和 myapp.png
:
include myapp.png
include myapp.desktop
所以我可以使用 python setup.py install
安装应用程序,它还会在正确的路径中安装 data_files
。
问题是,当我使用 pip uninstall myapp
卸载应用程序时,pip 不会删除 data_files
中的文件,也就是说 /usr/share/applications/myapp.desktop
和 /usr/share/pixmaps/myapp.png
中的文件。我需要自己删除它们。
如何使用 pip uninstall
自动删除这些文件?
你不能。 python setup.py install
导致您的包使用 setuptools 而不是 pip 安装,因此 pip 对包的了解不够,无法完全卸载它。甚至 setuptools 都不能卸载你的包,因为没有 python setup.py uninstall
命令!如果您希望 pip 能够正确卸载您的包,您需要使用 pip (pip install .
) 进行安装,但这样做的缺点是 data_files
文件将放在已安装包的旁边,而不是在系统根目录下(例如,myapp.desktop
会像 ~/.local/lib/python2.7/site-packages/usr/share/applications/myapp.desktop
这样的地方结束)。
我正在为我自己的 Linux 应用程序编写 setup.py
。我在 /usr/share/applications
中添加了一个桌面条目文件 myapp.desktop
。这是我的 setup.py
:
setup(...,
data_files=[
('/usr/share/applications', ['myapp.desktop']),
('/usr/share/pixmaps', ['myapp.png'])]
)
我还在 MANIFEST.in
中包含 myapp.desktop
和 myapp.png
:
include myapp.png
include myapp.desktop
所以我可以使用 python setup.py install
安装应用程序,它还会在正确的路径中安装 data_files
。
问题是,当我使用 pip uninstall myapp
卸载应用程序时,pip 不会删除 data_files
中的文件,也就是说 /usr/share/applications/myapp.desktop
和 /usr/share/pixmaps/myapp.png
中的文件。我需要自己删除它们。
如何使用 pip uninstall
自动删除这些文件?
你不能。 python setup.py install
导致您的包使用 setuptools 而不是 pip 安装,因此 pip 对包的了解不够,无法完全卸载它。甚至 setuptools 都不能卸载你的包,因为没有 python setup.py uninstall
命令!如果您希望 pip 能够正确卸载您的包,您需要使用 pip (pip install .
) 进行安装,但这样做的缺点是 data_files
文件将放在已安装包的旁边,而不是在系统根目录下(例如,myapp.desktop
会像 ~/.local/lib/python2.7/site-packages/usr/share/applications/myapp.desktop
这样的地方结束)。