在Cygwin中使用Python 3

目前 Cygwin 自带的 Python 还是 2.x 版本,如果想在这里使用 Python 3 只能使用别的方法了。

方法一:编译安装

编译安装,这是 Linux 下安装软件的常见方式,大致步骤 cygwin编译python3一文有述,鉴于原文是墙外的 blogspot,故摘要在这里:

  • 下载源码,解压
  • Cygwin 下切换到源码目录,运行命令 ./configure --enable-shared --with-wide-unicode
  • make,最后会报错退出,提示缺少 libpython3.2mu.dll.a,只需将当前目录下的 libpython3.2mu.a 复制为 libpython3.2mu.dll.a,然后重新 make
  • make install
  • 最后,在用户目录下的 .bash_profile 中加上
alias python3 = /usr/local/bin/python3.2mu
export python3

这样即可实现在 Cygwin 中运行 python3 打开 python 解析器。

无奈的是,我在最后 make install 的时候失败了,只好另走它径。

方法二:直接使用 Windows 版本的 Python 3

鉴于我已经安装了 Windows 版本的 Python 3,因而打起了这个的注意。Google 了一下,找到一个方法:还是编辑 .bash_profile 文件

# 需要注意一下路径有空格的做法,用\转义空格,然后路径用双引号括起
alias python3="/cygdrive/d/Program\ Files/python/python.exe"
export python3

这个方法是可行的,只是,使 Python 文件可直接运行的的 slashbang 需要是 "/cygdrive/d/Program\ Files/python/python.exe",不好记,而且一旦切换到 Ubuntu 下就用不了了。

方法三:直接使用 Windows 版本的 Python 3 之 二

ls -l 的时候发现有软链接这回事,于是尝试了这个方法。

/usr/local/bin 下使用 ln -s /cygdrive/d/Program\ Files/python/python.exe python3 来生成了一个软链接(注意此时路径转义空格但并没有使用双引号),这样,直接在 Cygwin 中运行 python3 可打开解析器,slashbang /usr/local/bin/python3 也可以生效,只要 Ubuntu 下对应目录也有一个 python3 的执行文件或链接也同样生效。

后言:虽说可以说是解决了问题,但编译失败还是一件无法否认的问题,谁叫我一直没看过 make 的相关知识呢,然后出了问题除了 Google 也只有 Bing 了,当两者都没有的时候就只有悲剧了。

评论

《 “在Cygwin中使用Python 3” 》 有 12 条评论

  1. 代码回音 的头像

    为何用cygwin啊,你不是有ubuntu

    1. 流年 的头像
      流年

      有时候在 Windows 下工作,不想特意为了这个而切换到 Ubuntu下

  2. 张海华 的头像

    我以前学过linux,但最终放弃了,难呀!

    1. 流年 的头像
      流年

      想学会某样东西总得付出精力和时间的

  3. EinCy 的头像

    最近在学Linux,觉得比Windows复杂好几万倍啊

    1. 流年 的头像
      流年

      日常使用的话也没太多复杂的东西,深入的话 Windows 同样也是很复杂的

  4. vastar 的头像

    流年仍旧是很勤劳哈

    1. 流年 的头像
      流年

      最近有那么一点时间 😎

  5. dengmin 的头像

    ubuntu放在哪里闲着不用还用起了这个cygwin

    1. 流年 的头像
      流年

      有时候懒得切换过去;
      而且,最近 upgrade 的时候出了些问题,还没修复 😈

  6. 馄饨s 的头像

    make install 最后会提示找不到 /usr/local/lib/python3.2/config-3.2m/Makefile,手动把当前目录的 Makefile 放到相应目录即可顺利编译,不妨试试。不过我最后还是用了 Windows 上的,原因在于另外装的模块问题…

    1. 流年 的头像

      嗯,有空再看看这个。现在很少用 win 了,对开发者太不友好了