【问题标题】:Copy and Rename file with setup.py使用 setup.py 复制和重命名文件
【发布时间】:2022-01-09 07:36:34
【问题描述】:

我的包文件中有一个模板文件,名为config_template.json 我想将文件从存储库的根目录复制到包目录中,子模块可以在其中访问它。原始文件 config.json 在我的 gitignore 文件中。我想这样做是为了访问可以与最终代码一起使用的模板,并且不会因我在个人文件中设置的路径而混淆任何用户。所有这些都应该在调用python setup.py 时完成。我现在的清单文件允许插入其他文件,但我不知道如何重命名它们。我愿意接受更好的方法。

【问题讨论】:

  • 为什么不把它永久移到那里?
  • 因为我想将模板推送到 repo 但实际配置不是。所以我可以在模板保持不变的情况下修改我自己的配置副本(以及其他用户)。实际上,我看到很多 PR(主要是数据科学家)想要改变自己的路径。我很确定这发生在git add .
  • 使用.gitignore 忽略实际配置。无论如何,您的 repo 应该包含带有setup.pyMANIFEST.in 和所有打包文件的根目录,因此模板是在根目录内还是在包的深处都没有关系。把它放在包里让setup.py更简单。
  • 好的,我认为将模板放入包中没有问题。据我了解 MANIFEST.in 它负责将文件放入已安装的打包文件中,这些文件不是 python 文件。这是我想要创建的行为,但除此之外,我希望在设置时创建模板的重命名副本,然后将其放入已安装的包中。因此,通过在里面设置 MANIFEST.in 和 config.json 并在 setup.py 中包装来自@Alexandru DuDu 的解决方案,我会创建想要的行为?

标签: python setuptools


【解决方案1】:

你可以使用这个例子:

import shutil

inputFilePath = "C:/User/admin/Desktop/config.json"
outputFilePath = "D:/output/config_template.json"
shutil.copy(inputFilePath, outputLocationPath)

将此代码包含在您的setup.py 中,并配置原始文件的路径和输出路径。 shutil.copy 输入输出可以取不同的名字,并将输入文件写入输出文件

【讨论】:

  • 真的那么简单吗?我想我需要用一些特殊的方式来表达它。到目前为止,我稍后再测试一下,谢谢
猜你喜欢
  • 2021-07-21
  • 1970-01-01
  • 2016-03-25
  • 2013-06-13
  • 1970-01-01
  • 2016-11-01
  • 2018-04-21
  • 1970-01-01
  • 2018-08-09
相关资源
最近更新 更多