使用setup.py和Python创建(或不创建)文件夹的巧妙方法?

时间:2018-09-06 16:55:40

标签: python setuptools setup.py

我正在构建一个小型命令行软件(假设它称为 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帮了我很多忙)等。因此,我不知道有多少好的做法,如果您告诉我目前管理用户首选项的方法不正确,我将很高兴对其进行更改以适应更高的标准。另外,如果我的问题不清楚,我在这里是为了让您理解它。

非常感谢。

1 个答案:

答案 0 :(得分:1)

对于这些数据文件的用例,我还不太清楚,但是它们似乎是用户首选项文件,在这种情况下,正确的做法是将它们存储在用户的主目录中,而不是包的代码。使用appdirs确定应用程序应在其中存储文件的正确路径。

  
      
  1. 如何使用setuptools创建目录数据文件?
  2.   

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

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

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