我的python项目通过setup.py
安装。项目结构如下:
├── Makefile
├── README.rst
├── circle.yml
├── docs
│ ├── Makefile
│ ├── conf.py
│ ├── deps.txt
│ ├── guide_installation.rst
│ ├── guide_model.rst
│ ├── guide_transliteration.rst
│ ├── index.rst
│ ├── make.bat
│ └── module_trans.rst
├── indictrans
│ ├── __init__.py
│ ├── _decode
│ ├── _utils
│ ├── base.py
│ ├── iso_code_transformer.py
│ ├── libindic_
│ ├── mappings
│ ├── models
│ ├── polyglot_tokenizer
│ ├── script_transliterate.py
│ ├── test.py
│ ├── tests
│ ├── transliterator.py
│ ├── trunk
│ └── unicode_marks.py
├── requirements.txt
├── setup.cfg
├── setup.py
├── test-requirements.txt
└── tox.ini
子文件夹indictrans/models
的外观
├── ben-eng
│ ├── classes.npy
│ ├── coef.npy
│ ├── intercept_final.npy
│ ├── intercept_init.npy
│ ├── intercept_trans.npy
│ └── sparse.vec
├── ben-guj
│ ├── classes.npy
│ ├── coef.npy
│ ├── intercept_final.npy
│ ├── intercept_init.npy
│ ├── intercept_trans.npy
│ └── sparse.vec
因此我有.npy
和.vec
文件要包含在项目中。
在我的setup.py
中,我试图通过models
伪指令明确包含此文件夹include_package_data
,例如:
setup(
setup_requires=['pbr'],
pbr=True,
packages=find_packages(),
include_package_data=True,
package_data={'models': ['*.npy','*.vec']},
ext_modules=cythonize(extensions)
)
在我拥有的setup.cfg
中
[files]
packages =
indictrans
但是运行python setup.py install
不会将models文件夹复制到安装文件夹/usr/local/lib/python2.7/dist-packages/indictrans/
。
如果我打印出来,它就是我得到的find_packages
的输出
['indictrans', 'indictrans.tests', 'indictrans.libindic_', 'indictrans._utils', 'indictrans._decode', 'indictrans.polyglot_tokenizer', 'indictrans.models', 'indictrans.trunk', 'indictrans.libindic_.utils', 'indictrans.libindic_.soundex', 'indictrans.libindic_.utils.tests', 'indictrans.libindic_.soundex.utils', 'indictrans.libindic_.soundex.tests', 'indictrans.libindic_.soundex.utils.tests', 'indictrans.polyglot_tokenizer.tests', 'indictrans.trunk.tests']
所以我假设将包含indictrans/models
,但不包括在内。
答案 0 :(得分:1)
include_package_data=True
添加到您的setup
函数中(您已经做到了)。MANIFEST.in
所在的目录中创建文件setup.py
MANIFEST.in
如下所示:
include indictrans/models/ben-eng/*
include indictrans/models/ben-guj/*
您不需要setup.cfg
。
来源:This great writeup of python packaging
编辑recursive-include
:
根据{{3}},这也应该起作用:
recursive-include indictrans/models *.npy *.vec
答案 1 :(得分:1)
include_package_data=True
需要MANIFEST.in。
要包括模块indictrans.models
的数据,您必须提供全名:
package_data={'indictrans.models': ['*.npy','*.vec']},