我正在构建一个小型命令行软件(假设它称为 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 需要在文件夹数据文件中创建一些首选项文件,但无法导入现有的首选项文件(例如,使用data_files
的{{1}}参数),因为它们将包含信息安装后由用户给出。而且,我无法提前创建空文件,因为无法提前告知将创建多少个文件。
我需要在安装 Stanley 时一次创建此文件夹。 Stanley 在此文件夹中创建的任何文件在每次更新时都必须保持不变。也就是说,当用户运行setuptools.setup()
时,文件夹数据文件中包含的所有首选项都将保留。所以我的问题是:
1)如何使用setuptools创建目录数据文件? 2)如何确保我的软件在数据文件中创建的文件不会更改,并且在重新安装或更新后仍可在数据文件中访问?
请注意,这是我第一次编程“真实”软件,包括编码,测试,打包,分发(即使PyPi和Python帮了我很多忙)等。因此,我不知道有多少好的做法,如果您告诉我目前管理用户首选项的方法不正确,我将很高兴对其进行更改以适应更高的标准。另外,如果我的问题不清楚,我在这里是为了让您理解它。
非常感谢。
答案 0 :(得分:1)
对于这些数据文件的用例,我还不太清楚,但是它们似乎是用户首选项文件,在这种情况下,正确的做法是将它们存储在用户的主目录中,而不是包的代码。使用appdirs确定应用程序应在其中存储文件的正确路径。
- 如何使用setuptools创建目录数据文件?
不要使用setuptools创建它们;编写您的软件包,以便在需要这些文件时在适当的位置创建文件。
- 如何确保我的软件在数据文件中创建的文件不会更改,并且在重新安装或更新后仍可在数据文件中访问?
该文件存储在软件包代码之外,因此不受卸载或更新的影响。