我想在一个顶层的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
importlib.util方法 此处 对我来说并不奏效--我试图导入的常量文件并没有被设置为一个模块(没有 __init__.py 等)。 我也不想在我的 sys.path 中添加任何东西,因为我想导入的文件只是包含一个特定机器学习运行的设置。也许不是很优雅,但我做的是。
示例代码在这里。
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)