我有一个包含嵌入式Python 2.6解释器的程序。当我调用解释,我打电话PySys_SetPath()来解释的进口路径设置为一个已安装到我的可执行文件,包含我的Python脚本文件的子目录...这样的:如何让Python使用包含冒号的路径?
PySys_SetPath("/path/to/my/program/scripts/type1:/path/to/my/program/scripts/type2");
(除了路径字符串是基于我的程序的可执行文件的当前位置动态生成的,而不是像上例中的硬编码)
这工作正常......除非聪明的用户决定将我的程序安装在具有冒号在它的名字。在这种情况下,我的PySys_SetPath()命令结束这样看(注意一个名为“路径:以”文件夹中的存在):
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()函数,它似乎不支持任何类型的引用或转义来处理文字冒号......但也许我错过了一些细微差别。
你是否尝试用反斜杠转义冒号?所以像'PySys_SetPath(r“/ path \:to/my/program/scripts/type1:/ path \:to/my/program/scripts/type2”);'。 – 2011-04-21 23:51:49