我有一台 Windows 8 笔记本电脑,我曾经在上面使用过 Python 一段时间。我安装了 3.3 和 2.7,以及几个库。我最近安装了 Cygwin,并且非常喜欢它。我注意到可安装包列表中有 Python,我想知道是否可以告诉 Cygwin 使用 Python 可执行文件,而不是尝试在 Cygwin 中复制所有内容。
这可能吗?这是个好主意吗?如果可以,我该怎么做?
答案1
这绝对是可能的。最简单的方法是当您想要运行 Python 脚本时显式调用 Windows Python。如果您从 Cygwin shell 执行此操作,您可能需要一个如下所示的命令:
/cygdrive/c/Python27/python.exe script.py
它将使用您的脚本作为参数来调用 Python,并且应该以与从 Windows 运行几乎相同的方式运行它。
但是“可能”并不等同于“合理”。我强烈建议在 Cygwin 中使用 Cygwin Python;Cygwin 和 Windows Python 之间有很多种方式会以不好或意想不到的方式进行交互。我首先想到的是:
Windows Python 需要一个像 Windows cmd 终端一样的终端;MinTTY 和其他 Cygwin 终端的行为不同,因此您可能会看到与将内容打印到终端相关的意外行为。举一个具体的例子,如果 Python 命令以缓慢的速度将一堆消息打印到终端,例如某个长期运行的进程的持续进度消息,当它们的大小为 64 kB 时,它们很可能会被缓存并一次性写入
Cygwin 的 shell 会自动扩展 glob,例如
*.txt
,然后再将它们作为参数传递给脚本。Windows 的命令行不会这样做,这意味着任何涉及字符*
或?
作为脚本参数的内容都可能以意想不到的方式被解释。Cygwin 程序通常使用 Linux 样式的行尾 (
LF
),而 Windows 程序通常使用 Windows 样式的行尾 (CRLF
)。Cygwin 和 Windows Python 没有什么不同,如果文件中的行尾不符合程序预期,则在处理字符串时可能会出现错误或意外行为。
这些问题都可以通过小心、注意和意识来解决,但如果您选择在 Cygwin 中使用 Cygwin Python,那么您就不需要首先解决这些问题了。