包括 Python 包中的文件夹和文件

including folder and files inside a Python package

我正在尝试制作一个 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

其中两个文件可能在运行时从 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) 访问它们

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

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

建议像 . = champs/num_Uname.jsonchamps = num_Uname.json

这样的行

正如这个 question 回答:

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

1) Include_package_data=真 + 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.里面的文件