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

问题描述 投票:1回答:1

我想在一个顶层的python文件settings.py中定义像BASE_DIR这样的常量,并从项目中的 "所有 "文件中访问这些常量,例如从import_scriptsimport_users.py和export_scriptsexport_users.py(独立的帮助脚本)。

我尝试了很多不同的方法,比如从import_users.py导入settings.py,然后在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
python python-3.x
1个回答
0
投票

importlib.util方法 此处 对我来说并不奏效--我试图导入的常量文件并没有被设置为一个模块(没有 __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)
© www.soinside.com 2019 - 2024. All rights reserved.