From b52a60bb82bc48f4ef2349bc1ea3f0334e408ab0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Sep 2021 13:04:47 +0200 Subject: [PATCH] Centralize `user_config_dir()` decision making --- utils/general.py | 14 +++++++++----- utils/plots.py | 3 +-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/utils/general.py b/utils/general.py index e8b158a773d4..229b7a7db168 100755 --- a/utils/general.py +++ b/utils/general.py @@ -103,11 +103,15 @@ def get_latest_run(search_dir='.'): return max(last_list, key=os.path.getctime) if last_list else '' -def user_config_dir(dir='Ultralytics'): - # Return path of user configuration directory (make if necessary) - cfg = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'} # 3 config dirs - path = Path.home() / cfg.get(platform.system(), '') # OS-specific config dir - path = (path if is_writeable(path) else Path('/tmp')) / dir # GCP and AWS lambda fix, only /tmp is writeable +def user_config_dir(dir='Ultralytics', env_var='YOLOV5_CONFIG_DIR'): + # Return path of user configuration directory. Prefer environment variable if exists. Make dir if required. + env = os.getenv(env_var) + if env: + path = Path(env) # use environment variable + else: + cfg = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'} # 3 OS dirs + path = Path.home() / cfg.get(platform.system(), '') # OS-specific config dir + path = (path if is_writeable(path) else Path('/tmp')) / dir # GCP and AWS lambda fix, only /tmp is writeable path.mkdir(exist_ok=True) # make if required return path diff --git a/utils/plots.py b/utils/plots.py index 141a9ac2b09e..1ed88ea7c832 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -4,7 +4,6 @@ """ import math -import os from copy import copy from pathlib import Path @@ -21,7 +20,7 @@ from utils.metrics import fitness # Settings -CONFIG_DIR = Path(os.getenv('YOLOV5_CONFIG_DIR') or user_config_dir()) # Ultralytics settings dir +CONFIG_DIR = user_config_dir() # Ultralytics settings dir matplotlib.rc('font', **{'size': 11}) matplotlib.use('Agg') # for writing to files only