我有一个带有setup.py
脚本的 Python 应用程序,可以通过 Pip 或 setuptools 安装。但是,我发现这两种方法之间存在一些令人讨厌的差异,我想知道分发数据文件的正确方法。
import glob
import setuptools
long_description = ''
setuptools.setup(
name='creator-build',
version='0.0.3-dev',
description='Meta Build System for Ninja',
long_description=long_description,
author='Niklas Rosenstein',
author_email='rosensteinniklas@gmail.com',
url='https://github.com/creator-build/creator',
py_modules=['creator'],
packages=setuptools.find_packages('.'),
package_dir={'': '.'},
data_files=[
('creator', glob.glob('creator/builtins/*.crunit')),
],
scripts=['scripts/creator'],
classifiers=[
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python",
"Intended Audience :: Developers",
"Topic :: Utilities",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules",
],
license="MIT",
)
- 使用Pip, 中指定的文件
data_files
最终以sys.prefix + '/creator'
. - 使用setuptools(即
setup.py
直接运行),文件以lib/python3.4/site-packages/creator_build-0.0.3.dev0-py3.4.egg/creator
.
理想情况下,我希望文件始终位于同一位置,而与安装方法无关。我还希望将文件放入模块目录中(setuptools 这样做的方式),但是如果将包安装为压缩的 Python Egg可能会导致问题。
如何确保data_files
使用两种安装方法最终位于同一位置?另外,我怎么知道我的模块是否安装为压缩的 Python Egg,然后如何加载数据文件?