创建(或不创建)文件夹的聪明方法设置.pyPython呢?

2024-06-26 10:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个小的命令行软件(假设它名为Stanley),并用setuptools将其打包。我的项目基本上是这样的:

Stanley / __init__.py
        / foo.py
        / bar.py
        / datafiles / preference_file_1.metadata
                    / ...
                    / preference_file_n.metadata         
LICENSE
MANIFEST.in
README.md
setup.cfg
setup.py

Stanley需要在datafiles文件夹中创建一些首选项文件,但无法导入现有的首选项文件(例如,使用setuptools.setup()中的data_files参数),因为它们将包含用户在安装后提供的信息。此外,我不能预先创建空文件,因为我无法预先知道将创建多少个这些文件。在

我需要这个文件夹创建一次,在安装斯坦利时。Stanley在该文件夹中创建的任何文件在每次更新时都必须保持完整。也就是说,当用户运行$ pip3 install stanley --upgrade时,文件夹datafiles中包含的所有首选项都将被保留。所以我的问题是:

1)如何使用setuptools创建目录数据文件? 2) 如何确保我的软件在数据文件中创建的文件不会被更改,并且在重新安装或更新后仍可在数据文件中访问?在

请注意,这是我第一次编写一个“真正的”软件,包括编码、测试、打包、分发(尽管PyPi和Python为我做了很多工作),因此,我不知道有多少好的实践,如果你告诉我,我目前管理用户偏好的方法不正确,我很乐意改变它为了适应更高的标准。如果我的问题不清楚,我会让你明白的。在

非常感谢。在


Tags: 文件命令行用户py文件夹软件数据文件setup
1条回答
网友
1楼 · 发布于 2024-06-26 10:18:04
我_不_太_清楚_这些_数据_文件_的_用例_是_什么_ , _但_它们_似乎_是_用户_首选_项_文件_ , _在_这种_情况_下_ , _正确_的_做法_是_将_它们_存储_在_用户_的_主_目录_中_ , _远离_包_的_代码_ 。_使用appdirs确定应用程序存储文件的正确路径。在

  1. How to create the directory datafiles using the setuptools?

不要用setuptools创建它们;编写包,以便在需要文件时在适当的位置创建文件。在

  1. How to make sure that the files created by my software in datafiles will not be changed and will still be accessible in datafiles after a re-installation or an update?

文件存储在包的代码之外,因此不受卸载或更新的影响。在

相关问题 更多 >