【问题标题】:Directory-specific environment variable特定于目录的环境变量
【发布时间】:2018-10-16 06:32:43
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python linux environment-variables


    【解决方案1】:

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

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

    【讨论】:

    • 这就是我现在正在做的事情——问题是我仍然需要在 my_root = ... 中进行硬编码
    • 您有两种选择 - 一种是将 root_dir 作为参数传递给脚本,或者使用必须在脚本运行之前设置的环境变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 2011-09-14
    • 2014-11-13
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多