Windows python的Cygwin路径

时间:2011-11-10 11:43:14

标签: python cygwin

我可以访问具有最小cygwin安装的机器和Windows版本的python。我需要在那里运行一些python脚本,但是python需要Windows路径。我可以在我提供的参数上使用cygpath -w,但是在随后调用的许多其他脚本中包含了更多的unix / cygwin路径。

有没有办法告诉Windows python接受unix / cygwin路径?

2 个答案:

答案 0 :(得分:3)

不,Windows python对Cygwin路径没有支持,但Cygwin确实有自己的Python。如果您无法将其添加到现有的Cygwin安装中,您可能需要考虑在允许写入的目录中执行特定于用户的Cygwin安装。

有一种方法可以获得有限的Cygwin路径支持Windows程序,虽然我怀疑这不是你的选择:将Cygwin安装到C:\,以便Cygwin /path等效到C:\path。这依赖于以下事实:Windows API(尽管不是所有Windows程序)都接受反斜杠和斜杠作为路径分隔符,并且它认为没有驱动器号的绝对路径指的是系统驱动器(即C:)。 / p>

显然,这对于指向其他驱动器的Cygwin路径(通过Cygwin挂载表)不起作用。它也不适用于使用/(而非-)引入选项的任何程序,其中包括大多数内置Windows命令行工具。但它通常适用于Python等跨平台工具。

另一种选择是使用MSYS而不是Cygwin,它是旧Cygwin版本的一个分支,其最显着的特点是它在调用Windows程序时自动将POSIX路径转换为Windows路径。但请注意,这种方法也存在缺陷,因为并不总是清楚参数是否是路径。因此,有时它将无法转换路径或错误地更改不是路径的参数。

答案 1 :(得分: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 filename

来使两个文件都可执行。

P.S .:基于this blog post的灵魂。