首页 > 解决方案 > 特定于目录的环境变量

问题描述

我有一个这样的目录系统:

|- /root/path
  |- config.json
  |- script1.py
  |- a
    |- script2.py
  |- b
    |- c
      |- d
         |- script3.py

script1.py, script2.py,script3.py都使用“根路径”(/root/path)来操作。现在我已经将“/root/path”硬编码到 py 文件中。但是,假设我移动或重命名了根路径;我将不得不返回所有这些脚本并更改根路径。

我知道“解决”这个问题的一种方法是让 .py 文件了解它们的相对位置,例如从 .py 文件script3.py读取../../../config.json。但是,在某些时候,这会变得非常乏味,尤其是在设置大量脚本的情况下。

我想知道是否有一种方法可以说“此目录中从任何地方运行的任何脚本都可以访问某些环境变量”。“从哪里来”是斜体的,因为没有这个限制,我认为 direnv 可以正常工作。

标签: pythonlinuxenvironment-variables

解决方案


您可以定义一个变量,例如 my_root = '/root/path',并在脚本中定义相对于 my_root 的所有其他路径。例如,

config_json_path = os.path.join(my_root, 'config.json')

推荐阅读