meld 无法在 Cygwin 上启动:没有名为“meld”的模块

meld 无法在 Cygwin 上启动:没有名为“meld”的模块

我在 Windows 10 上使用 Cygwin 64;刚刚更新。一些相关的软件包版本:

  • 融合:3.18.0-1
  • python3:3.8.6-1
  • python2:2.7.18-4

我还使用 MobaXTerm 的 X 服务器(并且它有效 - 例如,我可以运行 xclock。)

当我在 Cygwin bash 会话(在 mintty 内)中运行 meld 时,我得到:

Traceback (most recent call last):
  File "/usr/bin/meld", line 71, in <module>
    import meld.conf
ModuleNotFoundError: No module named 'meld'

为什么会发生这种情况,我怎样才能正确运行?

笔记:

答案1

meld 似乎硬编码为 python3.6

https://cygwin.com/packages/x86_64/meld/meld-3.18.0-1

但默认指向 3.8

$ alternatives --display python3
python3 - status is auto.
 link currently points to /usr/bin/python3.8
/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.

尝试设置为 3.6

$ alternatives --config python3

There are 3 programs which provide 'python3'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/bin/python3.8
   2           /usr/bin/python3.6
   3           /usr/bin/python3.7

Enter to keep the current selection[+], or type selection number: 2

并再次测试融合

答案2

正如@matzeri 指出的那样,meld 似乎被硬编码为 python 3.6 - 而截至 2021 年 9 月,Cygwin64 将 Python 3.8 作为 python3 的默认替代方案。

现在,我不想更改所有应用程序的默认设置,但是 - 我们仍然可以手动强制融合本身:

  1. 复制/usr/bin/meld/usr/local/bin/meld
  2. 在 中/usr/local/bin/meld,替换:
#!/usr/bin/python3

和:

#!/usr/bin/python3.6

这至少可以解决缺少模块的问题 - 尽管您可能会遇到其他事宜

请记住,当您下次更新融合本身时,您有一个本地版本可以删除/更新!


编辑:如果你在另一个Linux发行版上遇到这个问题,直接的问题是在python的包搜索路径中找不到meld子目录。因此,假设 meld 正在由 python 版本 NM 运行,您可能会丢失

/usr/lib/pythonN.M/site-packages/meld/

或者 python 存储其“站点包”的地方的 meld 子目录。有时可以通过硬编码 meld 以使用另一个 python 版本来解决这个问题 - 但前提是版本有一个适当的 meld site-packages 文件夹。否则,您需要重新安装或手动安装 meld,确保子目录已就位。

答案3

@einpoklum 解释的问题的替代解决方案。

meld/conf.py添加路径的位置,例如

export PYTHONPATH=/usr/lib/pythonN.M/site-packages

该路径可以通过例如找到

locate meld conf.py

export可以添加到启动文件中,例如.bashrc(该部分适用于 Unix bash,我认为PYTHONPATH也适用于 Windows)。

答案4

我最近更新了 Cygwin 软件包,导致出现“ModuleNotFoundError:没有名为 'meld' 的模块”失败。就我而言,它有助于将 meld 降级到版本 3.16.4。

相关内容