web-dev-qa-db-ja.com

python-devインストールエラー:ImportError: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

何が問題であると思われ、どのように解決できますか?

55
Belphegor

動作するpython-aptパッケージがあることを確認してください。 apt_pkg.soが見つからないという問題を解決するために、そのパッケージを再度削除してインストールしてみてください。

apt-get install python-apt
44
Arnestig

Sudo apt-get updateを実行中にこの問題に遭遇しました。私のenvはpython2.7 + 3.4(デフォルト)+ 3.5のdebian8です。

次のコードは、python 3.5のapt_pkg....soファイルのみを再作成します

Sudo apt-get install python3-apt --reinstall

次のコードは私の問題を解決しました、

cd /usr/lib/python3/dist-packages
Sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.so

したがって、明らかにpython3-aptは、使用中の現在のpythonバージョンではなく、最高のpythonバージョンをチェックします。

80
zhazha

これで解決してください:

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

または:

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

基本的に、No such file or directoryちょうどlsを取得した場合、正しい名前を取得しようとします。

68
user8178061

このエラーは、pythonの新しいバージョンが古いバージョンと一緒にインストールされた場合によく発生します。

  • Ubuntu 18.04.1にはpythonバージョン3.6.6が付属しています
  • インストールされたppa:deadsnakes/python3.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
    

ディストリビューション以外のpython3バージョンをaptでイ​​ンストールすると、共有モジュールディレクトリがpython3のディレクトリに設定されます。通常は/usr/lib/python3になります。

ほとんどの場合これで問題ありませんが、状況によってはpythonの異なるバージョンが他のpythonバージョンとは異なるライブラリまたは共有オブジェクト/ライブラリに依存するため、他の回答として.SOを正しいpythonバージョンにリンクする必要があると指摘しました。 python3.6が64ビットシステムにインストールされている場合、apt_pkg .SOリンクは次のようになります。

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

しかし問題は、新しいpythonバージョンをインストールすると、最新のpythonバージョンを指すようにリンクが更新され、apt_pkgモジュールが見つからないというエラーが発生するという事実にあります。ディストリビューションに同梱されているpythonのバージョンを確認することで、上記のリンクを作成できます。または、メソッドを使用して、コマンドにpythonバージョンの選択肢を提供し、.SOをリンクします。

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

pythonは、インストールされた最新のpythonバージョンへのこのリンクを作成するため、3つのpythonバージョンから選択するオプションをコマンドに指定します。与えられたバージョン。

9
Jamie Lindsey

何らかの理由で、python3 dist-packagesディレクトリにapt_pkg.soがインストールされていませんでした。 (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アップグレード)

5
Jamie Pate

Ubuntu Quantalを使用してAptana StudioでPython 3.3.0スクリプトを実行するたびに、同じ問題に最近遭遇しました。私が取り組んでいるスクリプトからのエラーは別として、次のものが混ざっています:

Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 64, in 
    apport_excepthook from apport.fileutils import likely_packaged,
    get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 4, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in 
    <module> from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in 
    <module> import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 21, in <module>
    import apt_pkg
ImportError: No module named 'apt_pkg'

Python3-aptを削除、クリーニング、パージ、および再インストールし、少し覗き見したところ、エラーはPython 3.3.0にのみ影響していることがわかりました。 IDLEでapt_pkgをインポートしようとすると、同じエラーが鳴ります。興味深いことに、Python 3.2.3でIDLEを使用してこれをインポートするとうまくいきます。さらに、両方のバージョンのPython 3.x.xは同じ/usr/lib/python3/dist-packagesを共有し、その中にapt_pkg.cpython-32mu.soapt_pkg.cpython-32dmu.soがあります。これらのファイルはPython 3.3.0と互換性がありませんか?

最後に、Aptana Studioの外部でスクリプトを実行すると、ImportError: No module named 'apt_pkg'メッセージなしでスクリプトのエラーが発生します。

5
Roberto

これは、DeadsnakesリポジトリからPython3.7をインストールしようとした後、Ubuntu 18.04.2で発生しました。

解決策はこれでした1)cd/usr/lib/python3/dist-packages/2)Sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

5
Mirror Mirage

python 3.5を使用している場合は、3.4にダウングレードします。これが最も安全な方法です。

/usr/lib/python3/dist-packagesの下には、python 3.5では使用できない*34m*が表示されます。 zhazhaはそれにシンボリックリンクに答えます。

4
Pobe

最後の手段は、lnコマンドが多すぎる場合、または何らかの理由で魔法のように機能しない場合、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です。

Pythonバージョンを1つしか使用しない場合は、上記のcpmvにすることもできます。

3
Tong Niu

apt_pkg.soのシンボリックリンクを作成することに加えて、apt_inst.soと同じ方法でapt_pkg.soを作成することもできます。

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

ロケール変数を設定して、これを修正してください:

export LC_ALL="en_US.UTF-8"

export LC_CTYPE="en_US.UTF-8"
0
rajendra sharma