setuptools:在软件包外部添加其他文件

卡斯滕:

我有一个python具有固定布局应用程序,无法更改。我想使用setuptools将其包装起来,例如编写一个setup.py脚本。

使用官方文档,我能够编写第一个模板。但是,有问题的应用程序使用了许多其他数据文件,这些文件不是任何程序包的明确组成部分。这是一个示例源树:

somepackage
   __init__.py
   something.py
   data.txt
additionalstuff
   moredata.txt
INFO.txt

这是麻烦所在:中的代码something.py读取文件moredata.txtINFO.txt对于前者,我可以通过添加一个空additionalstuff/__init__.py文件将其升级additionalstuff到程序包并由来提取该问题setuptools但是我怎么可能增加INFO.txt我的.egg呢?

编辑

所提出的解决方案使用了类似

package_data = { '' : ['moredata.txt','INFO.txt']}

不适用于我,因为文件moredataINFO.txt不属于包,而是属于单独文件夹的一部分,该文件夹只是整个模块的一部分,而不是任何单独的包。如上所述,可以moredata.txt通过向中添加__init__.py文件来解决此问题additionpythonalstuff,从而将其升级为程序包。但是,这不是一个很好的解决方案,对于INFO.txt,它根本不在顶层目录中起作用

根据公认的答案,这是解决方案

这是setup.py

from setuptools import setup, find_packages

setup(
    name='mytest',
    version='1.0.0',
    description='A sample Python project',
    author='Test',
    zip_safe=False,
    author_email='[email protected]',
    keywords='test',
    packages=find_packages(),
    package_data={'': ['INFO.txt', 'moredata.txt'],
                  'somepackage':['data.txt']},
    data_files=[('.',['INFO.txt']),
                ('additionalstuff',['additionalstuff/moredata.txt'])],
    include_package_data=True,
)

这是MANIFEST.in

include INFO.txt
graft additionalstuff
include somepackage/*.txt
pacholik:

也有 data_files

data_files=[("yourdir",
             ["additionalstuff/moredata.txt", "INFO.txt"])],

考虑一下要将这些文件放在何处。文档中了解更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用setuptools创建一个调用外部C库的cython软件包

如何将静态文件包含到setuptools-Python软件包

在“ dotnet”中添加带有本地软件包文件的软件包

使用其他npm软件包中的gulp文件(导入最终将存在的文件)

npm-在其他文件夹中安装软件包的依赖项?

使文件可写以便添加新软件包

使用setuptools构建软件包时,是否应包括测试和.pyc文件?

如何使用setuptools和setup.py从软件包中排除单个文件

如何在Nixos的Spacemacs范围内添加其他软件包?

如何使用其他名称安装R软件包?

Anaconda从其他环境导入软件包

如何要求依赖于其他本地软件包的本地软件包

安装软件包而不更新其他不相关的软件包(Julia 1.0)

无法从其他软件包导入模块

释放引用其他程序集的nuget软件包

在未从其他软件包导入的软件包中寻找功能

将xib文件添加到Swift软件包

Antd的getFieldDecorator用于其他软件包

百胜安装软件包,而没有更新其他软件包或失败...?

使用其他发行版中的软件包

ubuntu软件包开发试图覆盖其他软件包的配置

.deb软件包可以删除其他软件包吗?

为什么Composer安装其他软件包?

如何创建自动安装其他软件包的元软件包?

将其他存储库用于Composer软件包

如何为其他Ubuntu版本重建软件包

卸载Debian软件包时如何删除其他文件夹?

Apt:将软件包安装到其他位置

升级freetype想要删除其他软件包