喂,
如果我尝试从另一个目录运行python脚本,它会告诉我每次他找不到所有的资源文件:
pygame.error:无法打开../ data / icon.png
等。
我认为这是因为相对路径和现在更改的工作目录?
我是对的吗?我怎么能避免这个?
问候
编辑: 正在加载代码:
path = os.path.join('..', 'data', 'gfx', filename)
blah = pygame.image.load(path).convert_alpha()
答案 0 :(得分:4)
你是对的。通过使用__file__
获取当前模块的位置以及os.path
中的各种函数以根据值生成绝对路径,可以在脚本中避免这种情况。
答案 1 :(得分:1)
假设您的项目是文件系统中的目录,并且如果您在项目中引用模块和脚本,则使用相对路径很好,在分发时,您必须分发整个目录。但是,如果您在项目文件夹之外引用某些外部路径,请确保编写绝对路径,这样您就不会遇到当前面临的问题。
如果将它放在模块中的任何位置,您可以通过os.getcwd()
获取路径。这将提供你的python正在执行的路径,你必须看到你引用的文件可以从该路径访问。