【问题标题】:including folder and files inside a Python package包括 Python 包中的文件夹和文件
【发布时间】:2019-08-15 06:00:36
【问题描述】:

我正在尝试制作一个 python 包,当我尝试从 Github here 安装库时,我已经设置了大部分内容,它安装了除了名为 champs 的文件夹和它的文件之外的所有内容

这是我的文件目录结构

LeagueYue
   champs
      -Lname_num.json
      -Lname_Uname.json
      -num_Uname.json
   -__init__.py
   -champion_files.py
   -external.py
   -match.py
   -rank.py
   -status.py
   -summoner.py
-requirements.txt
-setup.py

除了文件夹和champs里面的文件外,所有文件都安装好了

【问题讨论】:

标签: python-3.x python-packaging


【解决方案1】:

正如question 的回答:

添加静态文件有两种方式:

1) Include_package_data=True + MANIFEST.in

与 setup.py 同目录下的一个 MANIFEST.in 文件,如下所示:

include src/static/*
include src/Potato/*.txt

2) setup.py 中的 Package_data

package_data = {
    'static': ['*'],
    'Potato': ['*.txt']
}

指定setup.py.里面的文件

【讨论】:

    【解决方案2】:

    其中两个文件可能在运行时从 num_Uname.json 派生,但这没关系。

    我还没有在https://github.com/CharmingMother/LeagueLib/blob/async/setup.py 中看到data_files 指令

    Thomas Cokelaer 建议使用类似的表达式

    datafiles = [(datadir, list(glob.glob(os.path.join(datadir, '*'))))]
    

    然后

    setup(
        ...
        data_files = datafiles,
    )
    

    http://thomas-cokelaer.info/blog/2012/03/how-to-embedded-data-files-in-python-using-setuptools/

    在您的情况下,这可能很简单:

    data_files = [('', ['champs/num_Uname.json'])],
    

    Martin Thoma 解释说您应该在 How to read a (static) file from inside a Python package? 中使用 filepath = pkg_resources.resource_filename(__name__, path) 访问它们

    当我读到 Fine Manual,这个 setup.cfg 替代表面:

    [options.data_files]
    ...
    data = data/img/logo.png, data/svg/icon.svg
    

    建议像. = champs/num_Uname.jsonchamps = num_Uname.json 这样的行

    【讨论】:

    • 感谢您的回答和见解,我希望我也可以给您赏金但是Augusto A已经在您之前回答了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    相关资源
    最近更新 更多