我不确定是否有可靠的方法来确定这一点。实际上,我建议您不要测试这样的路径,因为您可能会在各种操作系统或环境中遇到不同的特殊情况。
以下是我推荐的几个替代方案:
1)如果这是一个命令行实用程序,我建议允许通过命令行标志加载自定义配置文件:
from argparse import ArgumentParser
import sys
import json
parser = ArgumentParser(description='...')
parser.add_argument('-c', '--config', default='config.json')
def main(argv):
args = parser.parse_args(argv)
print('loading config file:', args.config)
with open(args.config, 'r') as config:
config = json.loads(config.read())
print('loaded config', config)
if __name__ == '__main__':
main(sys.argv[1:])
运行命令: python3 test1.py -c config-dev.json
2) 如果这不是一个CLI应用程序,您可以通过使用环境变量来实现类似的功能:
import os
import json
os.environ.get('CONFIG', 'config.json')
def main():
config_file = os.environ.get('CONFIG', 'config.json')
print('loading config file:', config_file)
with open(config_file, 'r') as config:
config = json.loads(config.read())
print('loaded config', config)
if __name__ == '__main__':
main()
使用以下命令运行:CONFIG=config-dev.json python3 test2.py
或者:
export CONFIG=config-dev.json
python3 test2.py
你也可以编写一个 shell 脚本来帮助设置开发环境,我们称之为 customenv
:
source env/bin/activate
export CONFIG=config-dev.json
然后您可以使用此文件来激活开发环境:
source customenv
3)如果您真的希望在代码中为开发环境指定一个特殊情况,您也可以通过环境变量来指定:
import os
is_dev_mode = 'MY_APP_DEV' in os.environ and os.environ['MY_APP_DEV'] == '1'
if is_dev_mode:
print('dev mode!')
使用 MY_APP_DEV=1 python3 test3.py
命令运行,或者:
export MY_APP_DEV=1
python3 -m test3.py
4) 如需更多自定义:
import os
app_mode = os.environ.get('MY_APP_MODE', 'prod')
print(app_mode)