programing

python-dev 설치 오류:가져오기 오류: 이름이 apt_pkg인 모듈이 없습니다.

goodsources 2023. 6. 15. 21:48
반응형

python-dev 설치 오류:가져오기 오류: 이름이 apt_pkg인 모듈이 없습니다.

저는 Debian 사용자이고 python-dev를 설치하고 싶지만 셸에서 루트로 코드를 실행할 때:

# aptitude install python-dev

다음 오류가 발생합니다.

Traceback (most recent call last):       
  File "/usr/bin/apt-listchanges", line 28, in <module>
    import apt_pkg
ImportError: No module named apt_pkg

무엇이 문제인 것 같으며 어떻게 해결해야 합니까?

는 이 를 할 때 접했습니다.sudo apt-get update저의 환경은 debian8로, python2.7 + 3.4 (기본값) + 3.5입니다.

는 다코드다다생성다니합시음만음는▁re▁acreate만 다시 됩니다.apt_pkg....so 3.5x3

sudo apt-get install python3-apt --reinstall

다음 코드가 제 문제를 해결했습니다.

  1. 에 가다dist-packages
cd /usr/lib/python3/dist-packages
  1. 적한위찾을 찾습니다..so시스템에 설치된 파이썬 버전의 파일:
ls -l | grep apt_pkg
  1. 기호 링크 만들기:
sudo ln -s apt_pkg.cpython-{your-version-number}-x86_64-linux-gnu.so apt_pkg.so
  1. 를 바꿉니다.{your-version-number}적당하게.

주의, 다음은 apt_pkg37m에서 apt_pkg36m로 심볼릭 링크를 만듭니다. 올바른 버전 또는 적어도 기존 버전에 링크하고 있는지 확인하십시오.ls apt_pkg.cpython-*설치한 항목을 확인합니다.

sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.so apt_pkg.so

, 그럼, 분히명,python3-apt사용 중인 현재 파이썬 버전 대신 가장 높은 파이썬 버전을 확인합니다.

이러한 현상이 발생하는 이유를 이해하려면 아래의 답변을 참조하십시오. https://stackoverflow.com/a/64241654/21539

이를 통해 문제를 해결:

cd /usr/lib/python3/dist-packages
cp apt_pkg.cpython-34m-i386-linux-gnu.so apt_pkg.so

또는:

cd /usr/lib/python3/dist-packages
cp apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.so

기본적으로, 만약 당신이 그것을 얻는다면.No such file or directory 그저의ls올바른 이름을 얻기 위해 노력합니다.

Ubuntu 18.04.2에서 Deadsnakes repo에서 Python 3.7을 설치하려고 시도한 후에 이런 일이 발생했습니다.

솔루션은 다음과 같습니다.

1)cd /usr/lib/python3/dist-packages/

2)sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

작동하는 python-apt 패키지가 있는지 확인합니다.해당 패키지를 다시 제거하고 설치하여 apt_pkg.의 문제를 해결하여 찾을 수 없게 할 수 없습니다.

apt-get install python-apt

이 오류는 최신 버전의 파이썬이 이전 버전과 함께 설치되었을 때 종종 발생합니다.

  • Ubuntu 18.04.1은 python 버전 3.6.6과 함께 제공됩니다.
  • 설치된 ppa: dead snake/python 3.7.1 또는 대안
  • apt_pkg 모듈을 사용하는 명령을 실행하면 다음과 같은 오류가 발생합니다.

        from CommandNotFound.db.db import SqliteDatabase
    File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
        import apt_pkg
    

와 함께 됩니다. 의 경우 디렉토리는 apt, apt, apt, python3, apt, apt, apt, apt, python3, apt, python3, apt 등이 됩니다./usr/lib/python3.

대부분은 괜찮겠지만, 상황에 따라 다른 python 버전과는 다른 라이브러리나 공유 객체/라이브러리에 의존하기 때문에 다른 답변에서 지적했듯이 .SO를 올바른 python 버전에 연결해야 합니다.따라서 64비트 시스템에 python3.6이 설치되어 있다면 apt_pkg.SO 링크는

sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

그러나 문제는 새로운 파이썬 버전을 설치할 때 링크가 최신 파이썬 버전을 가리키도록 업데이트된다는 점이며, 이로 인해 apt_pkg 모듈을 찾을 수 없다는 오류가 발생합니다.어떤 버전의 파이썬이 디스트리뷰터와 함께 제공되는지 확인하면 위와 같이 링크를 만들 수 있습니다.또는 다음과 같은 .SO를 연결하기 위한 python 버전을 선택할 수 있는 방법을 명령을 제공합니다.

sudo ln -s apt_pkg.cpython-{36m,35m,34m}-x86_64-linux-gnu.so apt_pkg.so

python은 최신 설치된 python 버전에 대한 이 링크를 만들기 때문에 명령어에 3개의 python 버전 중에서 선택할 수 있는 옵션을 제공하며, 그 중에서 가장 높은 버전을 선택합니다.

이상한 복사 등으로 고치는 방법을 말하는 사람은 다 보이는데, 왜 문제가 발생하는지는 아무도 제대로 말하지 않았습니다.

저를 좋아하는 분들은 SO의 누군가가 그렇게 말했다고 해서 시스템 파일이 엉망이 되는 것을 원치 않으실 것을 설명하겠습니다.


문제는 다음과 같습니다.

  • 많은 시스템 스크립트에는 python3 shebang 하드코드가 있습니다.직접 확인할 수 있습니다.
~$ grep -R "\#\!/usr/bin/python3" /usr/lib/*

/usr/lib/cnf-update-db:#!/usr/bin/python3
/usr/lib/command-not-found:#!/usr/bin/python3
/usr/lib/cups/filter/pstotiff:#!/usr/bin/python3
/usr/lib/cups/filter/rastertosag-gdi:#!/usr/bin/python3 -u
grep: /usr/lib/cups/backend/cups-brf: Permission denied
/usr/lib/cups/backend/hpfax:#!/usr/bin/python3
/usr/lib/language-selector/ls-dbus-backend:#!/usr/bin/python3
/usr/lib/python3/dist-packages/language_support_pkgs.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/installdriver.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/openprinting.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/xmldriverprefs.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/smburi.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/ppds.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/debug.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/DistUpgrade/dist-upgrade.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/CommandNotFound/db/db.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/Quirks/quirkreader.py:#!/usr/bin/python3
grep: /usr/lib/ssl/private: Permission denied
/usr/lib/system-service/system-service-d:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/check-new-release-gtk:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/do-partial-upgrade:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/check-new-release:#!/usr/bin/python3
/usr/lib/update-notifier/package-data-downloader:#!/usr/bin/python3
/usr/lib/update-notifier/backend_helper.py:#!/usr/bin/python3
/usr/lib/update-notifier/apt_check.py:#!/usr/bin/python3
/usr/lib/update-notifier/apt-check:#!/usr/bin/python3

  • 패키지 python apt 키지python-apt/python3-apt에 대한

는 항상 따서스항현상연버가져다에 연결된 .python3적절한 패키지가 없기 때문에 실패합니다.


일반 솔루션: 기본 링크를 변경하지 마십시오. Ever. 이것은 또한 적용됩니다.python링크 - Python3에서 작동하지 않는 일부 오래된 구문 요소로 Python2에서 앱이 작성된 경우 앱이 작동하지 않습니다.

[터미네이터를 사용하기 때문에 터미널이 그렇게 부서졌는데, 이 터미네이터는 Python2.7과 호환되지 않습니다.]


여기에 제시된 솔루션은 적절한 패키지 파일을 복사/연결하거나 변경하는 것을 제안합니다.python3링크를 걸다

두 가지를 모두 분석해 보겠습니다.

  1. 적절한 패키지 복사/연결

Python 3.4 정도부터 모든 Python 스크립트가 최신 버전에서도 작동하기 때문에 이것은 문제가 되지 않습니다.

지금까지는요. 하지만 시스템을 충분히 오래 유지한다면 미래에는 고장이 날 수도 있습니다.

  1. python3

이는 "링크를 절대 변경하지 않음"으로 돌아갈 수 있기 때문에 훌륭한 솔루션입니다.


"하지만 저는 타자 치는 것을 좋아합니다!" - 저도 좋아합니다!애초에 그렇게 해서 이 문제에 도달했어요!

  1. 일반적으로 시스템 링크를 수동으로 변경하지 않아야 합니다. 다른 버전을 연결하는 데 사용합니다.이는 여러 버전이 있는 모든 앱에 적용됩니다.링크를 변경하기 때문에 이러한 시스템 스크립트는 여전히 손상되지만 링크와 대상을 올바른 순서로 배치했는지 또는 오타를 냈는지에 대한 걱정 없이 쉽게 전환할 수 있습니다.

  2. 다음과 같은 다른 이름 사용 고려python/python3사용자의 링크 또는 별칭입니다.

  3. 또는 자신의 것을 추가합니다.python/python3시스템 링크를 변경하지 않고 PATH에 연결할 수 있습니다(가상 환경과 동일).

이것은 Ubuntu18.04에서 python3.7을 업데이트한 후에 저에게 효과가 있었습니다.

cd /usr/lib/python3/dist-packages
sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

@user8178061의 솔루션은 잘 작동했지만 저는 제 버전인python3.7Ubuntu와 함께

교체했습니다.apt_pkg.cpython-3m-i386-linux-gnu.so와 함께apt_pkg.cpython-36m-x86_64-linux-gnu.so

여기서 실행할 두 가지 명령이 있습니다.

cd /usr/lib/python3/dist-packages

sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

  1. 기본 Python 3 버전을 확인합니다.

    python3 --version
    Python 3.7.5
    
  2. cd안으로/usr/lib/python3/dist-packages그리고 확인합니다.apt_pkg.*파일입니다. 기본 Python 버전에는 파일이 없습니다.

    ll apt_pkg.*
    apt_pkg.cpython-36m-x86_64-linux-gnu.so
    
  3. 기호 링크를 만듭니다.

    sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.cpython-37m-x86_64-linux-gnu.so 
    

만약 당신이 파이썬 3.7을 사용하고 있다면 대안을 업데이트하여 파이썬 3.6으로 다운그레이드하면, 이것은 나에게 효과가 있었습니다.

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

sudo update-alternatives --config python3

제 경우 아래 명령을 실행하여 오류를 해결했습니다.

sudo apt install --reinstall python3 python python3-minimal --fix-broken

어떤 이유로 인해 설치가 누락되었습니다.apt_pkg.sopython3 dist-dist-dir에서.(apt_pkg.cpython-33m-x86_64-linux-gnu.so있었어요?! 하지만 심볼릭 링크를 만들어야 했습니다.apt_pkg.so -> apt_pkg.cpython-33m-x86_64-linux-gnu.so/usr/lib/python3/dist-packages

업그레이드가 중단된 것인지 아니면 왜 업그레이드가 중단된 것인지 잘 모르겠습니다.업그레이드를 시도한 후 발생했습니다(정밀->raring->quantal upgrade

최후의 수단은sudo cp /usr/lib/python3/dist-packages/apt_pkg.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so만약에ln명령은 당신에게 너무 과하거나 어떻게든 마법처럼 작동하지 않습니다.

cp위에 또한 있을 수 있습니다.mv하나의 Python 버전만 사용하는 경우.

Ubuntu 16.04를 사용하고 있으며 Python 3.7로 업그레이드되었습니다.다음은 PPA를 추가할 때 발생한 오류입니다.

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test                                           
Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 11, in <module>
    from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

초기 파이썬 3.4로 심볼릭 링크를 만들어 이 오류를 해결할 수 있었습니다.apt_pkg.cpython-34m-x86_64-linux-gnu.so과 같은 링크를 으로써.

sudo ln -s apt_pkg.cpython-34m-x86_64-linux-gnu.so apt_pkg.so

파이썬 3.5를 사용하는 경우 3.4로 다운그레이드합니다.그게 가장 안전한 방법입니다.

/usr/lib/python3/dist-packages 수 있을 *34m*파이썬 3.5는 사용할 수 없습니다. zazha는 심볼릭 링크에 답합니다.

상징적인 링크를 만드는 것 외에도apt_pkg.so당신은 만들고 싶을지도 모릅니다.apt_inst.so apt_pkg.so.

ln -s apt_inst.cpython-35m-x86_64-linux-gnu.so apt_inst.so 

저는 링크를 만들려고 했지만 다른 많은 문제들이 발생했습니다.따라서 다음을 사용하여 이전 버전의 python을 선택하여 설치할 수 있습니다.

sudo update-alternatives --config python3

그리고 동일한 명령을 사용한 후 바로 원하는 버전으로 돌아갑니다.효과가 있기를 바랍니다.

Windows 10 WSL v1(Ubuntu 16.04.6 LTS)

레딧 답변(약간 수정된 것이 나에게 효과가 있었습니다)

sudo ln -sfn /usr/lib/python3/dist-packages/apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.so

4시간을 보낸 후에 나는 마침내 나에게 효과가 있는 이 해결책을 얻었습니다. 나는 이것이 도움이 되기를 바랍니다...

이전 python 버전에서 업그레이드할 때 일부 패키지가 이전 버전 경로에 유지되는 경우가 있다는 것을 이해하는 것이 중요합니다. 그래서 제가 한 일은 다음과 같습니다.

cd /usr/lib/python3/dist-packages

라는 파일이 합니다.apt_pkg.cpython-35m-x86_64-linux-gnu.so 또는 때 또는 34m 또 36m ▁the▁or▁current▁delete▁and다▁you를 삭제합니다.apt_pkg.so줄을 지어 들어가다

/usr/lib/python3/dist-packages

으로 마막으다사음용올경링만바듭다니크로를을 사용하여 .apt_pkg.so다음과 같이:

cd /usr/lib/python3/dist-packages
sudo ln -s apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.so

이제 다시 시도할 수 있고 효과가 있을 것입니다.

이 변종은 저에게 효과가 있습니다.

cd  /usr/lib/python3/dist-packages
ls -la /usr/lib/python3/dist-packages
sudo cp apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so

아래와 같이 심볼 링크 수준이 너무 많다는 오류 메시지가 표시되는 경우:

cp: failed to access '/usr/lib/python3/dist-packages/apt_pkg.so': Too many levels of symbolic links

그런 다음 apt_pkg.so 파일의 링크를 간단히 해제해야 합니다.다음 명령을 사용합니다.

sudo unlink apt_pkg.so

그런 다음 명령을 사용합니다.

sudo cp apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so

행운을 빕니다.

원답: https://askubuntu.com/a/1227625

저는 Ubuntu 16.04와 Python 3.6을 사용하고 있습니다.그래서 저는 마침내 다음과 같이 문제를 해결했습니다.

1 - 서버의 FTP에 연결합니다.

2- 폴더 "/usr/lib/sys3/dist-sys/"로 이동합니다.

"apt_pkg.cpython-35m-x86_64-linux-gnu.so " 파일을 3번 복제합니다.

4- 이 중복된 파일의 이름을 "apt_pkg.cpython-36m-x86_64-linux-gnu.so "로 변경합니다.

바로 그거야!

저에게 가장 깨끗한 해결책은 관련 라이브러리를 새로운 파이썬 버전으로 특정 공간에 재구축하는 것입니다.

저는 지금 Python 3.9에서 Python 3.10.1로 바꾸고 있습니다.

그래서:

cd /tmp/
apt source python3-apt
cd python-apt-version-ecc
python3-new-version setup.py build
python3-new-version setup.py install

패키지 package)로도 이 했습니다.software-properties,python-launchpadlib 지금은 등등고지, 그금리지금▁and▁and),.add-apt-repository아주 잘 작동합니다.

다시 컴파일할 항목은 무엇입니까?달리기에 대한 불만 사항을 주의하십시오.add-apt-repository.

그건 그렇고, 나는.Ubuntu 21.04하지만 논리는 데비안과 같은 시스템에서 동일합니다.

다음 문서를 검토하십시오.

그것은 당신이 그 문제를 해결하는 데 도움이 될 수 있습니다.

ModuleNotFoundError로 python 버전을 바꾸는 문제 해결: 'apt_pkg'이라는 모듈이 없습니다.

로케일 변수를 설정하여 이 문제를 해결하십시오.

export LC_ALL="en_US.UTF-8"

export LC_CTYPE="en_US.UTF-8"

다른 사람에게 도움이 될까봐 python 버전 충돌로 인해 발생한 이 문제를 python3 링크를 리디렉션한 다음 올바른 python 버전으로 리디렉션하여 마침내 해결했습니다.

sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.4

올바른 python 버전을 입력해야 할 수 있습니다.

python3 -V

언급URL : https://stackoverflow.com/questions/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg

반응형