我正在尝试发布我的第一个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
时,我看到正在使用的fp
是bin
目录中的目录,而不是site-packages/fp_pkg
内部的目录。
我该怎么办?如何在上述脚本中访问rings
目录?或者如何在当前设置中修改脚本中的代码以访问它?我进行了很多搜索并尝试了许多解决方案,但没有一个起作用。