Vic*_*lex 34 python setuptools
我怎么写setup.py这样:
bdist_egg)包括一个示例配置文件和{prefix}/etc目录?示例项目源目录如下所示:
bin/
myapp
etc/
myapp.cfg
myapp/
__init__.py
[...]
setup.py
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
setuptools安装在构建环境和安装环境中.
该'include_package_data'注释掉与否没有帮助.
Akh*_*rus 17
我正在研究这个问题,我认为答案在setuptools文档中:http://peak.telecommunity.com/DevCenter/setuptools#non-package-data-files
接下来,我引用我认为有答案的摘录:
非包数据文件
distutils通常将一般"数据文件"安装到特定于平台的位置(例如/ usr/share).此功能旨在用于文档,示例配置文件等.但是,setuptools不会将这些数据文件安装在单独的位置.它们捆绑在egg文件或目录中,与Python模块和包一起.也可以使用资源管理API [...]访问数据文件
顺便提一下,请注意,这种数据文件封装意味着您无法将数据文件实际安装到用户计算机上的任意位置 ; 这是一个功能,而不是一个bug.您始终可以在分发中包含一个脚本,该脚本可以自行决定将文档或数据文件提取并复制到用户指定的位置.如果将相关数据文件放在单个目录中,则可以使用带有目录名称的resource_filename()来获取文件系统目录,然后可以使用shutil模块进行复制.[...]