включая папку и файлы внутри пакета Python

Я пытаюсь создать пакет Python, и у меня уже есть большинство настроек, когда я пытаюсь установить библиотеку из Github здесь, он устанавливает все, кроме папки с именем 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


person KowaiiNeko    schedule 25.03.2019    source источник
comment
Я считаю, что этот вопрос может решить вашу проблему.   -  person Augusto A    schedule 27.03.2019
comment
Спасибо, это сработало потрясающе! Что касается награды, я думаю, вам придется опубликовать ее как ответ, а не комментарий, даже если это ответ.   -  person KowaiiNeko    schedule 27.03.2019
comment
Отвечает ли это на ваш вопрос? Как включить статические файлы в setuptools — пакет python   -  person ankostis    schedule 13.04.2020


Ответы (2)


Поскольку этот вопрос отвечает:

Есть 2 способа добавить статические файлы:

1) Include_package_data=True + MANIFEST.in

Файл MANIFEST.in в том же каталоге setup.py, который выглядит следующим образом:

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

2) Package_data в setup.py

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

Укажите файлы внутри setup.py.

person Augusto A    schedule 27.03.2019

Два файла, вероятно, могут быть получены во время выполнения из num_Uname.json, но это нормально.

Я еще не вижу директиву data_files в https://github.com/CharmingMother/LeagueLib/blob/async/setup.py

Томас Кокелер предлагает использовать такое выражение, как

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'])],

Мартин Тома объясняет, что вы должны получить к ним доступ, используя filepath = pkg_resources.resource_filename(__name__, path) в Как прочитать (статический) файл из пакета Python?

Когда я прочитал прекрасное руководство, эта setup.cfg альтернатива поверхности:

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

предлагая строку типа . = champs/num_Uname.json или champs = num_Uname.json

person J_H    schedule 27.03.2019
comment
Спасибо за ваш ответ и понимание, я хотел бы также дать вам вознаграждение, но Augusto A уже ответил раньше вас - person KowaiiNeko; 27.03.2019