我有一个包含嵌入式 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”中查找脚本文件",因此所有导入语句都不起作用。
我的问题是,除了告诉用户避免在其文件夹名称中使用冒号之外,是否有任何解决此问题的方法?
我查看了 Python/sysmodule.c 中的 makepathobject() 函数,它似乎不支持任何类型的引用或转义来处理文字冒号......但也许我错过了一些细微差别。