为了账号安全,请及时绑定邮箱和手机立即绑定

使用 setuptools 复制非 .py 文件

使用 setuptools 复制非 .py 文件

暮色呼如 2021-11-23 16:21:54
我的 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不会将模型文件夹复制到安装文件夹/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会被包括在内,但事实并非如此。
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

  1. 添加include_package_data=True到您的setup-function(您已经这样做了)。

  2. MANIFEST.in在同一个目录下创建一个文件setup.py

MANIFEST.in 可以如下所示:

include indictrans/models/ben-eng/*
include indictrans/models/ben-guj/*

你不需setup.cfg要这样做。

编辑关于recursive-include:根据文档,这也应该有效:

recursive-include indictrans/models *.npy *.vec


查看完整回答
反对 回复 2021-11-23
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

include_package_data=True需要MANIFEST.in

要包含模块的数据,indictrans.models您必须提供全名:

package_data={'indictrans.models': ['*.npy','*.vec']},


查看完整回答
反对 回复 2021-11-23
  • 2 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信