相对路径方法(python) 我从来没有考虑过任何一种软件分发(我用Python做这个项目),所以现在我不能确定“最好”或最常用的文件名处理方法。现在我对所有图像、配置文件等使用相对路径。。。从具有可执行程序的顶层目录

相对路径方法(python) 我从来没有考虑过任何一种软件分发(我用Python做这个项目),所以现在我不能确定“最好”或最常用的文件名处理方法。现在我对所有图像、配置文件等使用相对路径。。。从具有可执行程序的顶层目录,python,installation,relative-path,distutils,Python,Installation,Relative Path,Distutils,因此,当程序从不同的位置执行时,它自然会失败。我的问题是,如果可以将程序开始时的当前工作目录更改为_文件的dirname(它是在子shell中执行的,所以我看不出有什么问题,但我想独立运行平台,所以我不确定windows如何处理它),或者如果有问题,我可以使用distutils解决,并安装整个程序(我不喜欢)。或者如果有其他(更好的)方法 所以基本上我可以很容易地解决这个问题,我只想知道通常要做什么,谢谢你的建议。最佳实践是使用绝对路径 使用\uuu文件\uu路径不更改目录,而是使用它来计算用于

因此,当程序从不同的位置执行时,它自然会失败。我的问题是,如果可以将程序开始时的当前工作目录更改为_文件的dirname(它是在子shell中执行的,所以我看不出有什么问题,但我想独立运行平台,所以我不确定windows如何处理它),或者如果有问题,我可以使用distutils解决,并安装整个程序(我不喜欢)。或者如果有其他(更好的)方法

所以基本上我可以很容易地解决这个问题,我只想知道通常要做什么,谢谢你的建议。

最佳实践是使用绝对路径

使用
\uuu文件\uu
路径不更改目录,而是使用它来计算用于构建绝对路径的基本路径。在顶级模块中,添加:

import os.path

BASE = os.path.dirname(os.path.abspath(__file__))
并重用
BASE
来构建绝对路径:

abspath = os.path.join(BASE, relpath)
更改工作目录很少需要或有用。

最佳做法是使用绝对路径

使用
\uuu文件\uu
路径不更改目录,而是使用它来计算用于构建绝对路径的基本路径。在顶级模块中,添加:

import os.path

BASE = os.path.dirname(os.path.abspath(__file__))
并重用
BASE
来构建绝对路径:

abspath = os.path.join(BASE, relpath)

更改工作目录很少需要或有用。

好的
\uuuuu文件\uuuuu
是为给定模块定义的,并非所有模块都具有此属性。根据:

\uuuuu file\uuuu
是从中加载模块的文件的路径名(如果从文件加载)。静态链接到解释器的C模块不存在
\uuuuuu file\uuuuuu
属性;对于从共享库动态加载的扩展模块,它是共享库文件的路径名


由于您计划在自己的模块中调用此函数,因此在linux、windows甚至osx上都不会有任何问题。当然,请使用os.path模块来操作路径。

好的
\uuuuuu文件\uuuuuu
是为给定模块定义的,并非所有模块都具有此属性。根据:

\uuuuu file\uuuu
是从中加载模块的文件的路径名(如果从文件加载)。静态链接到解释器的C模块不存在
\uuuuuu file\uuuuuu
属性;对于从共享库动态加载的扩展模块,它是共享库文件的路径名

由于您计划在自己的模块中调用它,所以在linux、windows甚至osx上都不会有任何问题。当然,使用os.path模块来操作路径