如何撰写setup.py
以便:
bdist_egg
)包含一个示例配置文件和{prefix}/etc
目录?示例项目源目录如下所示:
bin/
myapp
etc/
myapp.cfg
myapp/
__init__.py
[...]
setup.py
setup.py看起来像这样:
from distutils.command.install_data import install_data
packages = ['myapp', ]
scripts = ['bin/myapp',]
cmdclasses = {'install_data': install_data}
data_files = [('etc', ['etc/myapp.cfg'])]
setup_args = {
'name': 'MyApp',
'version': '0.1',
'packages': packages,
'cmdclass': cmdclasses,
'data_files': data_files,
'scripts': scripts,
# 'include_package_data': True,
'test_suite': 'nose.collector'
}
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
setup(**setup_args)
setuptools安装在构建环境和安装环境中。
'include_package_data'
是否已注释无效。
答案 0 :(得分:14)
我正在就此问题进行一些研究,我认为答案在setuptools文档中:http://peak.telecommunity.com/DevCenter/setuptools#non-package-data-files
接下来,我引用我认为有答案的摘录:
非包数据文件
distutils通常会将常规“数据文件”安装到a 特定于平台的位置(例如/ usr / share)。此功能旨在 用于文档,示例配置文件之类的内容, 等等。 setuptools不会在a中安装这些数据文件 但是,单独的位置。它们捆绑在egg文件中或 目录,以及Python模块和包。数据文件 也可以使用资源管理API [...]
进行访问顺便说一句,请注意,这种数据文件的封装意味着你 实际上无法将数据文件安装到某个任意位置 用户的机器;这是一个功能,而不是一个bug。你总是可以包括一个 您的发行版中的脚本,用于提取和复制您的 文档或数据文件到用户指定的位置 自由裁量权。如果您将相关数据文件放在一个目录中,那么 可以使用resource_filename()和目录名来获取 文件系统目录,然后可以使用shutil模块进行复制。 [...]