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 버전으로 다운그레이드하는 데 도움이 되었습니다.

관련 정보