Как проверить, находится ли путь в PYTHONPATH? - PullRequest
1 голос
/ 15 апреля 2020

Как я могу проверить, что путь находится в PYTHONPATH?

Я пытался сделать:

def path_is_in_pythonpath(path):
    return str(path) in sys.path

Но иногда он не работал при работе на Windows. Путь был в PYTHONPATH, но проверка вернула Ложь.

1 Ответ

1 голос
/ 15 апреля 2020

Оказывается, что Windows пути нечувствительны к регистру. Это применимо даже к буквам дисков, которые иногда могут быть строчными, несмотря на здравый смысл, что это всегда прописные буквы.

os.path.normcase выполняет работу по нормализации путей Windows в нижнем регистре.

Это будет правильно проверять, если path в PYTHONPATH, ОС независимо:

def path_is_in_pythonpath(path):
    path = os.path.normcase(path)
    return any(os.path.normcase(sp) == path for sp in sys.path)
...