首页 > 解决方案 > 包含外部文件时,安装工具是否会在 MANIFEST.in 以外的任何地方显示?

问题描述

当我使用我的 Python 包生成源代码分发时

python setup.py sdist --formats=zip

我正在使用一个MANIFEST.in文件来指定要包含的其他文件。

到目前为止,我将 Sphinx 文档的输出作为包的一部分包含在内。这可能不是标准做法,但这些是我团队内部分发的包。该文档没有被托管,因此将它与包捆绑在一起似乎很容易。

无论如何,我会构建我的 Sphinx 文档,然后添加

recursive-include docs/_build/html *

MANIFEST.in文件。我也有include_package_data=Truesetup.py文件中。这给了我一个适合我要求的初始解决方案。

我现在有一个服务器来托管文档。所以我不再需要将它捆绑在包中。我从我的MANIFEST.in-但仍然包含文件中删除了上面的行,我不知道为什么......

是否有其他位置可以覆盖MANIFEST.in我不知道的位置?我什至尝试删除并重新添加清单文件但没有效果......

setup.py(我已将名称、电子邮件和 URL 更改为“虚拟”值以在此处发布)

from setuptools import setup
import json
import os

REQUIRED = ["lxml", "jinja2"]


def ver():
    with open("meta.json") as meta:
        return json.load(meta)["version"]


def readme():
    with open("README.txt") as rm:
        return rm.read()


setup(name="zfim",
      version=ver(),
      description="Python API for PTC Integrity IM server",
      long_description=readme(),
      url="//path/to/repo",
      author="...",
      author_email="...",
      license="MIT",
      packages=["zfim"],
      install_requires=REQUIRED,
      entry_points={
          "console_scripts": []
      },
      dependency_links=["//path/to/local/package_repo"],
      zip_safe=True,
      include_package_data=True,
      classifiers=[
          "Programming Language :: Python :: 3",
          "Operation System :: Windows"])

清单文件

include README.txt
include LICENSE.txt
include requirements.txt
include meta.json

标签: pythonsetuptools

解决方案


如果我删除package-name.egg-info目录,在重新运行之前,python setup.py sdist我对MANIFEST.in文件所做的任何更改都会受到尊重。

这似乎有点像黑客,但它似乎对我有用。


推荐阅读