Setup.py:在Python包中包含脚本使用的数据文件

时间:2018-12-24 05:43:58

标签: python python-3.x setuptools packaging setup.py

我正在尝试发布我的第一个Python软件包。我有在脚本内使用的mp3文件(将从命令行运行)。问题是我无法访问它们。

首先,这是软件包文件的文件结构(这些都在fp_pkg目录中):

scripts
|---fp                 # <-- The script that will be run
src
|---fp_pkg
----|---rings          # <-- Files I need to access
--------|---1.mp3
--------|---2.mp3
--------__init__.py
README
requirements.txt
setup.py

这是setup.py文件的相关内容:

setuptools.setup(
     ...
     scripts=['scripts/fp'],
     packages=["fp_pkg"],
     package_dir={'fp_pkg': 'src/fp_pkg'},
     package_data={'fp_pkg': ['rings/*.mp3']},
     include_package_data=True,
 )

现在,在运行python3 setup.py bdist_wheel之后,我将使用以下命令在虚拟环境(vtmp)中安装软件包:

python -m pip install "path/to/fp_pkg/dist/fp-0.1-py3-none-any.whl"

据我所见

  • 脚本(fp)放置在虚拟环境的bin目录中,也放置在虚拟环境的lib/python3.7/site-packages/fp_pkg中。

  • 包含所需文件的rings目录也放置在lib/python3.7/site-packages/fp_pkg中。

我通过以下方式访问rings脚本中的fp文件:

BASE_DIR_PATH = os.path.dirname(os.path.abspath(__file__))
RINGS_PATH = os.path.join(BASE_DIR_PATH, 'rings/')

但是当我运行fp时,收到一条消息,提示RINGS_PATH指定的路径不存在。

运行which fp时,我看到正在使用的fpbin目录中的目录,而不是site-packages/fp_pkg内部的目录。

我该怎么办?如何在上述脚本中访问rings目录?或者如何在当前设置中修改脚本中的代码以访问它?我进行了很多搜索并尝试了许多解决方案,但没有一个起作用。

0 个答案:

没有答案