我正在尝试创建一个具有实用命令行程序的Python模块。
我正在使用setuptools和Python3。我使用entry_points
安装字段创建了实用程序,但是我希望包含一个默认配置文件,我想将它放在用户的主.config
目录中。
这是我的包目录布局:
⤷ tree
.
├── config
│ └── spt.config
├── README.org
├── utilityTool
│ ├── __init__.py
│ ├── file1.py
│ ├── file2.py
│ └── tools
│ ├── commandline.py
│ ├── __init__.py
└── setup.py
└── MANIFEST.in
这是我的setup.py
:
import utilityTool
from setuptools import setup, find_packages
import os
setup(name='utilityTool',
version=utilityTool.__version__,
description='A utility tool',
long_description='Longer package description',
classifiers=[
'Development Status :: 3 - Alpha',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3',
'Topic :: Software Development :: Build Tools',
'Topic :: Utilities',
],
keywords='utility tool',
license='MIT',
packages=find_packages(),
install_requires=['yapsy', 'argparse'],
include_package_data=True,
zip_safe=False,
entry_points={'console_scripts':['spt = utilityTool.tools.commandline:main']},
data_files=[('{}/.config/spt/'.format(os.environ['HOME']),['config/spt.config'])],
)
在我的MANIFEST.in文件中,我只有include config/spt.config
我正在使用虚拟环境,所以我也不会在我的系统上搞砸了。
要安装我的软件包,我从软件包目录运行pip install -e .
。
就像我说的那样安装我的实用工具spt
,就好了,但我无法找到我在data_files
列表中的配置文件在哪里被复制到任何地方。它不在我的home
目录中,因为我运行find -type f -name "spt.config"
并且没有显示其他结果。
如果我运行python3 setup.py install
,它会安装到正确的位置。
是否需要像this answer中那样安装后脚本?我认为这是setuptools应该能够做的事情,但我想我在某处读到这也是setuptools的一个特性。似乎只有我必须要做的事情才能让pip认出它。
感谢您指向类似内容的示例项目的任何指针或链接。