我有一个python
具有固定布局的应用程序,无法更改。我想使用setuptools将其包装起来,例如编写一个setup.py
脚本。
使用官方文档,我能够编写第一个模板。但是,有问题的应用程序使用了许多其他数据文件,这些文件不是任何程序包的明确组成部分。这是一个示例源树:
somepackage
__init__.py
something.py
data.txt
additionalstuff
moredata.txt
INFO.txt
这是麻烦所在:中的代码something.py
读取文件moredata.txt
和INFO.txt
。对于前者,我可以通过添加一个空additionalstuff/__init__.py
文件将其升级additionalstuff
到程序包并由来提取该问题setuptools
。但是我怎么可能增加INFO.txt
我的.egg
呢?
所提出的解决方案使用了类似
package_data = { '' : ['moredata.txt','INFO.txt']}
不适用于我,因为文件moredata
和INFO.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
也有 data_files
data_files=[("yourdir",
["additionalstuff/moredata.txt", "INFO.txt"])],
考虑一下要将这些文件放在何处。在文档中了解更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句