微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当存在多个同名应用程序时,如何强制 cygwin 运行特定应用程序?

如何解决当存在多个同名应用程序时,如何强制 cygwin 运行特定应用程序?

这是我在 Cygwin 中得到的:

$ where python
C:\cygwin64\bin\python
C:\Users\eeng1\AppData\Local\Programs\Python\python39\python.exe
C:\Users\eeng1\AppData\Local\Microsoft\WindowsApps\python.exe

$ which python
/usr/bin/python

我想知道这两件事:

  1. 为什么 cygwin 在我没有安装 Python 时已经包含它?路径在 where 和 which 命令结果之间似乎不匹配。
  2. 有没有办法删除 cygwin bin 文件夹中的 Python?
  3. 为什么WindowsApps文件夹下有一个python?我不记得实际上在那里放了什么 Python。

4.我如何告诉 Cygwin 它必须运行在 python39 文件夹中找到的 python.exe 而不是任何其他文件夹!

编辑:

当我尝试使用推荐给我的 Cygwin 安装程序卸载 Python 时。我明白了:

问题 1/1 包 clang-8.0.1-1 需要 python2,但没有 可以安装提供程序解决方案 1/2

  • 允许将 clang-8.0.1-1 替换为 clang-5.0.1-2 解决方案 2/2(认)
  • 不要要求卸载python2-2.7.18-4

看来我不能只是摆脱cygwin bin文件夹中存在的Python2。没有直接的方法可以做到这一点。

解决方法

在 Cygwin /usr/bin/python 下是一个由 alternatives 管理的链接

$ alternatives --display python
python - status is auto.
 link currently points to /usr/bin/python3.8
/usr/bin/python2.7 - priority 27
/usr/bin/python3.8 - priority 38
/usr/bin/python3.6 - priority 36
/usr/bin/python3.7 - priority 37
Current `best' version is /usr/bin/python3.8.

如果您想绕过 Cygwin python 并运行 Windows 版本(冒着破坏其他 Cygwin 程序的所有风险),您有多种选择:

  1. 设置指向 Windows 的替代项
  2. C:\Users\eeng1\AppData\Local\Programs\Python\Python39\ 放在 PATH 的 /usr/bin/ 之前
  3. 为完整的 windows python 使用别名。

关于删除python2,可以使用cygcheck-dep包来识别依赖。在我的系统上:

$ cygcheck-dep -q -n python2
 python2: is needed for ( clang clang-analyzer gobject-introspection libfontforge2 libglib2.0-devel libgtk2.0-devel libpeas1.0_0 llvm nghttp2 octave-miscellaneous pulseaudio-equalizer python python-gobject-devel python2-backports.ssl_match_hostname python2-gobject python2-pyqt5 python2-sip )

所以要删除 python2,我还应该删除所有不需要的包。
cygcheck-dep -q -N python2
你还会看到所有需要递归的包 python2)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。