【问题标题】:Can I ignore symlinks in setuptools MANIFEST.in?我可以忽略 setuptools MANIFEST.in 中的符号链接吗?
【发布时间】:2013-10-18 22:03:14
【问题描述】:

使用 python 的 setuptools (python setup.py sdist) 创建源代码分发时,我使用的是包含以下行的 MANIFEST.in 文件:

recursive-include mypackage

因为我想在 mypackage 目录中包含一些非模块文件。但是,在 mypackage 目录下也有一些符号链接,我不想将其目标包含在我的源代码分发中。有没有办法在 MANIFEST.in 中指定“忽略符号链接”?

我知道...我可能不应该在那里有那些符号链接。

【问题讨论】:

  • 也许您可以通过运行将MANIFEST_template.in 转换为MANIFEST.in 的函数在您的setup.py 开头排除它们?使用来自this post 的信息扫描符号链接。不过,如果有这样的选择就好了。
  • 据我所知,应避免使用recursive-include mypackage 将所有内容包含在您的包中。这可以获取很多你真的不想包含在你的发行版中的东西。如果特定文件很少且特殊,则应列出它们,或者通过扩展名或其他文件名模式包含它们,例如recursive-include mypackage *.mydataformat.
  • 如果您知道符号链接,您可以在 recursive-include 之后在 MANIFEST.in 中显式添加 excludes - 指令按顺序评估。

标签: python symlink software-packaging


【解决方案1】:

Distutils 不提供对符号链接的任何特殊处理。您可以查看distutils code 并看到MANIFEST.in 文件的处理正在执行简单的模式匹配,递归使用os.listdir,没有对符号链接进行任何特殊处理。

【讨论】:

  • 您可能需要编辑此答案,以明确这对我原来的问题意味着“否”——distutils 不能被告知忽略符号链接,因为在后台它不知道它们。
猜你喜欢
  • 2011-03-31
  • 1970-01-01
  • 2016-08-23
  • 2021-10-28
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 2011-09-24
相关资源
最近更新 更多