我可以访问具有最小cygwin安装的机器和Windows版本的python。我需要在那里运行一些python脚本,但是python需要Windows路径。我可以在我提供的参数上使用cygpath -w
,但是在随后调用的许多其他脚本中包含了更多的unix / cygwin路径。
有没有办法告诉Windows python接受unix / cygwin路径?
答案 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的灵魂。