从父目录中的python文件导入常量

时间:2019-09-05 10:42:43

标签: python python-3.x

我想在顶级python文件settings.py中定义BASE_DIR之类的常量,并从我项目中的“所有”文件中访问这些常量,例如来自import_scripts / import_users.py和export_scripts / export_users.py(独立的帮助脚本)。

我尝试了很多不同的操作,例如从import_users.py导入settings.py relative并将其导入import_scripts / __ init__py。到目前为止没有成功。

编辑:我在脚本中添加了父文件夹,例如在import_users.py到sys.path。但是我不想一次又一次地在每个脚本中执行此操作,因此我一直在寻找一种使用常量在存储库中一次执行此操作的方法。

my_app
├── import_scripts
│   ├── import_users.py
├── export_scripts
│   ├── export_users.py
├── lib
│   ├── csv_reader.py
└── settings.py

1 个答案:

答案 0 :(得分:0)

importlib.util方法here对我不起作用-我尝试导入的常量文件未设置为模块(没有__init__.py等)。我也不想在sys.path中添加任何内容,因为我要导入的文件仅包含特定机器学习运行的设置。也许不是很优雅,但是我所做的是:

  1. 使用os模块将当前工作目录存储为变量
  2. 使用os模块构建指向设置文件存储目录的路径
  3. 使用os模块将目录更改为设置文件所在的位置
  4. 导入设置变量
  5. 使用os模块将目录更改回当前工作目录

示例代码在这里:

import os
cur_working_dir = os.getcwd()
run_settings_path = 'output/run_data/1'
path_to_settings_file = os.path.join(cur_working_dir,run_settings_path)
os.chdir(path_to_settings_file)
from settings_file import *
os.chdir(cur_working_dir)