Python:为什么setuptools没有';不包括我的包裹数据?
今天我创建了一个setup.py文件,发现一个工作脚本和两个不工作的场景。 在两种非工作场景中,Python:为什么setuptools没有';不包括我的包裹数据?,python,setuptools,distutils,Python,Setuptools,Distutils,今天我创建了一个setup.py文件,发现一个工作脚本和两个不工作的场景。 在两种非工作场景中,package\u dataafter在构建中丢失。我使用python setup.py sdist创建了构建 为什么场景2和场景3不包括我的包数据? 场景1起作用: 场景2不起作用: 场景3也不起作用: 在我的例子中,问题不在setup.py中,而是缺少MANIFEST.In,它还需要声明包数据。不能在包数据声明中直接使用glob语法 但在将其传递给设置函数之前,可以声明包含此数据的变量: from
package\u data
after在构建中丢失。我使用python setup.py sdist
创建了构建
为什么场景2和场景3不包括我的包数据?
场景1起作用:
场景2不起作用:
场景3也不起作用:
在我的例子中,问题不在setup.py中,而是缺少MANIFEST.In,它还需要声明包数据。不能在包数据声明中直接使用glob语法 但在将其传递给设置函数之前,可以声明包含此数据的变量:
from glob import glob
data = glob('data/*.dat')
txt_files = glob('*.txt')
...
setup(...
package_data = {
'': txt_files,
'mypkg': data,
}
...
这不是真的,如果包数据声明正确,它将自动进入清单。@marscher,
包数据
在源发行版中不起作用。。你需要舱单。。检查tsg是否正确是的,在setup.py package_data和MANIFEST.inHuh中都需要它。在我处理清单的所有工作之后,这似乎实际上是正确的答案(至少在setuptools中是这样)。这是不正确的,setuptools默认使用glob:package_data={'':['*.dat']}
from setuptools import setup #, find_packages
from setuptools.command import sdist
setup (
name = 'mypkg',
packages = ['mypkg'],
package_dir = {'mypkg': 'src/mypkg'},
include_package_data = True,
package_data = {
'': ['*.txt'],
'mypkg': ['data/*.dat'],
}
)
from setuptools import find_packages
from setuptools.command import sdist
setup (
name = 'mypkg',
packages = find_packages('src'),
package_dir = {'mypkg': 'src/mypkg'},
include_package_data = True,
package_data = {
'': ['*.txt'],
'mypkg': ['data/*.dat'],
}
)
from glob import glob
data = glob('data/*.dat')
txt_files = glob('*.txt')
...
setup(...
package_data = {
'': txt_files,
'mypkg': data,
}
...