gpt4 book ai didi

python - 如何确保 python 找到必要的数据文件?

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:18 24 4
gpt4 key购买 nike

请考虑这个脚本:

$ tree my_application 
my_application
├── my_application
│ ├── sound.mp3
│ ├── __init__.py
│ ├── my_application.py
│ ├── my_application.pyc
│ └── __pycache__
│ ├── __init__.cpython-34.pyc
│ └── my_application.cpython-34.pyc
├── my_application.egg-info
│ ├── dependency_links.txt
│ ├── entry_points.txt
│ ├── PKG-INFO
│ ├── requires.txt
│ ├── SOURCES.txt
│ └── top_level.txt
├── run.py
├── MANIFEST.in
└── setup.py

my_application.py 是一个仅使用 mplayer 播放 sound.mp3 的脚本:

class Sound():
def __init__(self):
self.cmd = ["mplayer", "sound.mp3"]
def play(self):
subprocess.Popen(self.cmd)

setup.py 是经典的 setup.py 文件,其中 console_scriptmy_application:main

MANIFEST.in 包含对 sound.mp3 的引用,以确保在运行 setup.py 时复制它:

include my_application/sound.mp3
global-exclude *.pyc

run.py 包含一小段代码,用于运行 my_applicationmain() 函数:

from my_application import main

if __name__ == "__main__":
main()

还有一个 __init__.py 文件,以便 main() 函数正确地向“外部世界”显示:

from .my_application import main

__all__ = ["main"]

现在,当我在内部 my_application 目录中运行 main() 函数时,该脚本可以正常工作。但是一旦该函数从其他地方运行,例如通过运行 run.py 或使用控制台脚本,mplayer 提示找不到 sound.mp3:

Cannot open file 'sound.mp3': No such file or directory

如何确保 mplayer 找到 sound.mp3,无论我位于哪个目录?

最佳答案

如果您使用setuptools,则可以使用pkg_resources检索文件的正确路径:

import pkg_resources

class Sound():
def __init__(self):
sound_path = pkg_resources.resource_filename(
'my_application', 'sound.mp3')
self.cmd = ['mplayer', sound_path]

...

关于python - 如何确保 python 找到必要的数据文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34463626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com