diff --git a/detect.py b/detect.py index 57bd6eea9..92fcd064d 100644 --- a/detect.py +++ b/detect.py @@ -16,7 +16,9 @@ import torch import torch.backends.cudnn as cudnn FILE = Path(__file__).resolve() -sys.path.append(FILE.parents[0].as_posix()) # add yolov5/ to path +ROOT = FILE.parents[0] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH from models.experimental import attempt_load from utils.datasets import LoadImages, LoadStreams @@ -284,7 +286,7 @@ def parse_opt(): def main(opt): - check_requirements(exclude=('tensorboard', 'thop')) + check_requirements(requirements=ROOT / 'requirements.txt', exclude=('tensorboard', 'thop')) run(**vars(opt)) diff --git a/export.py b/export.py index 9d7576bf3..e876af234 100644 --- a/export.py +++ b/export.py @@ -32,7 +32,7 @@ import torch.nn as nn from torch.utils.mobile_optimizer import optimize_for_mobile FILE = Path(__file__).resolve() -ROOT = FILE.parents[0] # yolov5/ dir +ROOT = FILE.parents[0] # YOLOv5 root directory if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) # add ROOT to PATH diff --git a/models/tf.py b/models/tf.py index 5b918ee3c..3265b7b75 100644 --- a/models/tf.py +++ b/models/tf.py @@ -17,8 +17,9 @@ from copy import deepcopy from pathlib import Path FILE = Path(__file__).resolve() -ROOT = FILE.parents[1] # yolov5/ dir -sys.path.append(ROOT.as_posix()) # add yolov5/ to path +ROOT = FILE.parents[1] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH import numpy as np import tensorflow as tf diff --git a/models/yolo.py b/models/yolo.py index 0a27b24de..a7590c578 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -12,7 +12,9 @@ from copy import deepcopy from pathlib import Path FILE = Path(__file__).resolve() -sys.path.append(FILE.parents[1].as_posix()) # add yolov5/ to path +ROOT = FILE.parents[1] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH from models.common import * from models.experimental import * diff --git a/train.py b/train.py index 281a3c0ba..89c0c507b 100644 --- a/train.py +++ b/train.py @@ -27,7 +27,9 @@ from torch.optim import Adam, SGD, lr_scheduler from tqdm import tqdm FILE = Path(__file__).resolve() -sys.path.append(FILE.parents[0].as_posix()) # add yolov5/ to path +ROOT = FILE.parents[0] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH import val # for end-of-epoch mAP from models.experimental import attempt_load @@ -470,10 +472,11 @@ def parse_opt(known=False): def main(opt, callbacks=Callbacks()): # Checks + set_logging(RANK) if RANK in [-1, 0]: print_args(FILE.stem, opt) check_git_status() - check_requirements(requirements=FILE.parent / 'requirements.txt', exclude=['thop']) + check_requirements(requirements=ROOT / 'requirements.txt', exclude=['thop']) # Resume if opt.resume and not check_wandb_resume(opt) and not opt.evolve: # resume an interrupted run diff --git a/utils/__init__.py b/utils/__init__.py index 74260ad1e..e69de29bb 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -1,19 +0,0 @@ -# import sys -# from pathlib import Path -# -# import torch -# from PIL import ImageFont -# -# FILE = Path(__file__).resolve() -# ROOT = FILE.parents[1] # yolov5/ dir -# if str(ROOT) not in sys.path: -# sys.path.append(str(ROOT)) # add ROOT to PATH -# -# # Check YOLOv5 Annotator font -# font = 'Arial.ttf' -# try: -# ImageFont.truetype(font) -# except Exception as e: # download if missing -# url = "https://ultralytics.com/assets/" + font -# print(f'Downloading {url} to {ROOT / font}...') -# torch.hub.download_url_to_file(url, str(ROOT / font)) diff --git a/utils/aws/resume.py b/utils/aws/resume.py index e869834e9..e1a8bd896 100644 --- a/utils/aws/resume.py +++ b/utils/aws/resume.py @@ -8,7 +8,10 @@ from pathlib import Path import torch import yaml -sys.path.append('./') # to run '$ python *.py' files in subdirectories +FILE = Path(__file__).resolve() +ROOT = FILE.parents[2] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH port = 0 # --master_port path = Path('').resolve() diff --git a/utils/loggers/wandb/sweep.py b/utils/loggers/wandb/sweep.py index 4d5df5c8e..fdabec4eb 100644 --- a/utils/loggers/wandb/sweep.py +++ b/utils/loggers/wandb/sweep.py @@ -4,7 +4,9 @@ from pathlib import Path import wandb FILE = Path(__file__).resolve() -sys.path.append(FILE.parents[3].as_posix()) # add utils/ to path +ROOT = FILE.parents[3] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH from train import train, parse_opt from utils.general import increment_path diff --git a/utils/loggers/wandb/wandb_utils.py b/utils/loggers/wandb/wandb_utils.py index e7b0d8221..ab2c20d52 100644 --- a/utils/loggers/wandb/wandb_utils.py +++ b/utils/loggers/wandb/wandb_utils.py @@ -11,7 +11,9 @@ import yaml from tqdm import tqdm FILE = Path(__file__).resolve() -sys.path.append(FILE.parents[3].as_posix()) # add yolov5/ to path +ROOT = FILE.parents[3] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH from utils.datasets import LoadImagesAndLabels from utils.datasets import img2label_paths diff --git a/val.py b/val.py index 3574fb085..2dbf570f1 100644 --- a/val.py +++ b/val.py @@ -18,7 +18,9 @@ import torch from tqdm import tqdm FILE = Path(__file__).resolve() -sys.path.append(FILE.parents[0].as_posix()) # add yolov5/ to path +ROOT = FILE.parents[0] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH from models.experimental import attempt_load from utils.datasets import create_dataloader @@ -325,7 +327,7 @@ def parse_opt(): def main(opt): set_logging() - check_requirements(requirements=FILE.parent / 'requirements.txt', exclude=('tensorboard', 'thop')) + check_requirements(requirements=ROOT / 'requirements.txt', exclude=('tensorboard', 'thop')) if opt.task in ('train', 'val', 'test'): # run normally run(**vars(opt))