可以像PYTHON_PATH一样设置环境变量,但对于MacOS中的open()方法。 例如
open('file.txt')
在另一个目录中搜索 file.txt
,与 .py 脚本不同。
就我而言,我无法将 open('file.txt')
更改为绝对路径,并将 file.txt
移动到脚本目录。我只能设置环境。
相对路径始终根据当前工作目录进行解析。您可以在运行 Python 之前更改工作目录(例如,使用 shell 中的
cd
命令)或在脚本中使用 os.chdir
。没有环境变量可以更改工作目录(尽管这并非不可能;Python 根本无法识别任何可用于在启动时执行隐式 os.chdir(...)
的环境变量)。
不过,通常情况下,您不会在脚本中使用相对路径。您可以使用可在运行时设置的参数构造绝对路径。例如,
import argparse, pathlib
p = argparse.ArgumentParser()
p.add_argument("--basepath", type=pathlib.Path, default=pathlib.Path.cwd())
args = p.parse_args()
with open(args.basepath / "file.txt") as f:
...
(当然,用户可以提供相对路径作为
--basepath
参数。您可以让运行时检查值 是 绝对路径,或者在假设用户将提供相对路径的情况下允许相对路径与其当前工作目录兼容。)