我有一个 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 脚本的目录,这就是我现在所做的 - 但我宁愿保持用户界面尽可能简单。)
确保
pip
清理文件的典型方法是让软件包在其安装目录中包含空占位符文件(带有您所需的文件名)。
然后,您可以根据需要在运行时覆盖这些文件。当需要卸载时,
pip
将根据文件名称而不是内容删除文件。