Windows Python的Cygwin路径

3
我可以使用安装有最小化Cygwin和Windows版本的Python的计算机。我需要在该计算机上运行一些Python脚本,但是Python需要Windows路径。我可以使用提供的参数来使用cygpath -w,但是随后调用的其他脚本中会包含更多的Unix/Cygwin路径。
是否有办法告诉Windows Python接受Unix/Cygwin路径?
2个回答

2
不,Windows版本的Python不支持Cygwin路径,但是Cygwin有自己的Python。如果你无法将其添加到现有的Cygwin安装中,则可以考虑在允许您编写的目录中进行用户特定的Cygwin安装。
有一种方法可以为Windows程序获得有限的Cygwin路径支持,尽管我怀疑这对您也不是一个选项:将Cygwin安装到 C:\,以便Cygwin /path 等同于 C:\path。这依赖于Windows API(尽管不是所有Windows程序)接受斜杠和反斜杠作为路径分隔符,并且它将没有驱动器号的绝对路径视为指向系统驱动器(即 C:)。
显然,这对指向其他驱动器的Cygwin路径(通过Cygwin挂载表)是行不通的。对于任何使用 / (而不是 -)引入选项的程序也不起作用,其中包括大多数内置的Windows命令行工具。但通常适用于跨平台工具,例如Python。
另一个选择是使用MSYS代替Cygwin,它是旧版Cygwin的分支,其最突出的特点是在调用Windows程序时自动将POSIX路径转换为Windows路径。但是请注意,这种方法也有其缺点,因为有时不清楚参数是否为路径。因此,有时它将无法翻译路径或错误地更改不是路径的参数。

1
创建一个名为wpython的文件,并将其保存在某个地方,例如/bin
#!/bin/bash

path=$1
shift # Remove filepath from other args to pass them further
python.exe $(cygpath -w $path) $@ # Call python.exe with Windows path and passed args

那么就像这样使用它:

#!/usr/bin/env wpython
print(123)

请不要忘记使用以下命令使两个文件可执行:chmod +x 文件名

P.S.: 解决方案基于这篇博客文章


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接