MeldはCygwinで起動できません: 'meld'というモジュールはありません。

MeldはCygwinで起動できません: 'meld'というモジュールはありません。

今更新されたWindows 10でCygwin 64を使用しています。いくつかの関連パッケージのバージョン:

  • フュージョン:3.18.0-1
  • python3:3.8.6-1
  • python2:2.7.18-4

私もXサーバーにMobaXTermを使用します(そしてうまくいきます。例えば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にはPython3の基本的な代替案としてPython 3.8があります。

これで、すべてのアプリケーションのデフォルト設定を変更したくありませんが、まだ手動で融合自体を強制することができます。

  1. /usr/bin/meldにコピー/usr/local/bin/meld
  2. /usr/local/bin/meld以下を交換します。
#!/usr/bin/python3

そして:

#!/usr/bin/python3.6

これは、少なくともモジュールの欠落の問題を解決します。その他

次に、Fusion自体を更新するときに削除/更新するローカルバージョンがあることを忘れないでください。


編集する:他のLinuxディストリビューションでこの問題が発生した場合、即時の問題はpythonのパッケージ検索パスにmeldサブディレクトリが見つからないことです。したがって、meldがPythonバージョンNMで実行されていると仮定すると、欠落する可能性があります。

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

あるいは、Pythonが「サイトパッケージ」を保存するmeldサブディレクトリです。これは時々、異なるPythonバージョンを使用するためにMeldをハードコーディングすることによって解決することができます。それバージョンには適切な Meld site-packages フォルダがあります。それ以外の場合は、meldを手動で再インストールまたはインストールして、サブディレクトリが正しい場所にあることを確認する必要があります。

答え3

@einpoklumが説明する問題の代替ソリューションです。

meld/conf.pyパスを追加する場所(例:

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

パスは次のように見つけることができます。

locate meld conf.py

exportたとえば、スタートアップファイルに追加できます.bashrc(このセクションはUnixに適用され、Windowsにもbash適用されます)。PYTHONPATH

答え4

私は最近Cygwinパッケージを更新しましたが、「ModuleNotFoundError: 'meld'というモジュールがありません」というエラーが原因で失敗しました。私の場合、Meldをバージョン3.16.4にダウングレードするのに役立ちました。

関連情報