卸载包含未分发的非 python 文件的软件包

问题描述 投票:0回答:1

我有一个 python 应用程序,已按照here所述存储在 pypi 上。 该应用程序运行外部软件(blast+)并生成非Python文件(各种数据库和

txt
文件,以及反馈到应用程序中的
xml
文件)。 目前,我的目录结构(当与
pip
安装到名为
env
的环境中时)是:

lib/site-packages/app/file1.py...

运行后变成:

lib/site-packages/app/file1.py...xml_file.xml, db_file.txt, db_file.pdb ...

当我

pip uninstall app
:

Found existing installation: app 1.1a0
Uninstalling app-1.1a0:
  Would remove:
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app-1.1a0.dist-info\*
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\*
    c:\users\username\appdata\local\anaconda3\envs\app_env\scripts\app.exe
  Would not remove (might be manually added):
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins.txt
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins_db.pdb
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins_db.phr
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins_db.pin
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins_db.pot
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins_db.psq
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins_db.ptf
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\all_proteins_db.pto
    c:\users\username\appdata\local\anaconda3\envs\app_env\lib\site-packages\app\results.xml

我认为这不是什么大问题,因为文件每次运行都会被重写,如果您再次安装我的应用程序,它只会重新生成原始文件夹。 但我不想让不必要的文件弄乱这个地方,并可能用

would not remove
消息吓到新用户。 有没有办法指定包将生成文件,并且如果包是(可能在 pyproject.toml 中),则应将其删除?

(如果没有,我可以让用户指定一个本地目录来写入文件,而不是仅仅将其设置为保存与制作 fies 相关的 python 脚本的目录,这就是我现在所做的 - 但我宁愿保持用户界面尽可能简单。)

python package delete-file pypi pyproject.toml
1个回答
0
投票

确保

pip
清理文件的典型方法是让软件包在其安装目录中包含空占位符文件(带有您所需的文件名)。

然后,您可以根据需要在运行时覆盖这些文件。当需要卸载时,

pip
将根据文件名称而不是内容删除文件。

© www.soinside.com 2019 - 2024. All rights reserved.