У меня есть программа, которая включает встроенный интерпретатор Python 2.6.Когда я вызываю интерпретатор, я вызываю PySys_SetPath (), чтобы установить путь импорта интерпретатора для подкаталогов, установленных рядом с моим исполняемым файлом, которые содержат мои файлы сценариев Python ... например:
PySys_SetPath("/path/to/my/program/scripts/type1:/path/to/my/program/scripts/type2");
(за исключением того, чтостроки пути генерируются динамически на основе текущего местоположения исполняемого файла моей программы, а не жестко, как в примере выше)
Это работает нормально ... кроме случаев, когда умный пользователь решает установить мою программу подпапка с двоеточием в названии.В этом случае моя команда PySys_SetPath () в конечном итоге выглядит следующим образом (обратите внимание на наличие папки с именем «path: to»):
PySys_SetPath("/path:to/my/program/scripts/type1:/path:to/my/program/scripts/type2");
... и это нарушает все мои скрипты Python, потому чтотеперь Python ищет файлы сценариев в «/ path» и «to / my / program / scripts / type1» вместо «/ path: to / myprogram / scripts / type1», и поэтому ни один из операторов импорта не работает.
У меня такой вопрос, есть ли какое-нибудь решение этой проблемы, кроме указания пользователю избегать двоеточий в именах его папок?
Я посмотрел на функцию makepathobject () в Python / sysmodule.cи, похоже, он не поддерживает какие-либо цитаты или экранирование для обработки буквальных двоеточий ... но, возможно, мне не хватает некоторого нюанса.