Просмотр исходного кода

Fix `is_writeable()` for 3 OS support (#4743)

* Fix `is_writeable()` for 3 OS support

* Update general.py
modifyDataloader
Glenn Jocher GitHub 3 лет назад
Родитель
Сommit
a144536f88
Не найден GPG ключ соответствующий данной подписи Идентификатор GPG ключа: 4AEE18F83AFDEB23
1 измененных файлов: 15 добавлений и 10 удалений
  1. +15
    -10
      utils/general.py

+ 15
- 10
utils/general.py Просмотреть файл

@@ -105,19 +105,24 @@ def get_latest_run(search_dir='.'):

def user_config_dir(dir='Ultralytics'):
# Return path of user configuration directory (make if necessary)
system = platform.system()
cfg = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'}
path = Path.home() / cfg.get(system, '') / dir
if system == 'Linux' and not is_writeable(path): # GCP functions and AWS lambda solution, only /tmp is writeable
path = Path('/tmp') / dir
if not path.is_dir():
path.mkdir() # make dir if required
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
path.mkdir(exist_ok=True) # make if required
return path


def is_writeable(path):
# Return True if path has write permissions (Warning: known issue on Windows)
return os.access(path, os.R_OK)
def is_writeable(dir):
# Return True if directory has write permissions
# return os.access(path, os.R_OK) # known issue on Windows
file = Path(dir) / 'tmp.txt'
try:
with open(file, 'w'):
pass
file.unlink() # remove file
return True
except IOError:
return False


def is_docker():

Загрузка…
Отмена
Сохранить