私は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
何が問題であると思われ、どのように解決できますか?
動作するpython-aptパッケージがあることを確認してください。 apt_pkg.soが見つからないという問題を解決するために、そのパッケージを再度削除してインストールしてみてください。
apt-get install python-apt
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バージョンをチェックします。
これで解決してください:
/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
を取得した場合、正しい名前を取得しようとします。
このエラーは、pythonの新しいバージョンが古いバージョンと一緒にインストールされた場合によく発生します。
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バージョンから選択するオプションをコマンドに指定します。与えられたバージョン。
何らかの理由で、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アップグレード)
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.so
とapt_pkg.cpython-32dmu.so
があります。これらのファイルはPython 3.3.0と互換性がありませんか?
最後に、Aptana Studioの外部でスクリプトを実行すると、ImportError: No module named 'apt_pkg'
メッセージなしでスクリプトのエラーが発生します。
これは、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
python 3.5を使用している場合は、3.4にダウングレードします。これが最も安全な方法です。
/usr/lib/python3/dist-packages
の下には、python 3.5では使用できない*34m*
が表示されます。 zhazhaはそれにシンボリックリンクに答えます。
最後の手段は、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つしか使用しない場合は、上記のcp
をmv
にすることもできます。
apt_pkg.so
のシンボリックリンクを作成することに加えて、apt_inst.so
と同じ方法でapt_pkg.so
を作成することもできます。
ln -s apt_inst.cpython-35m-x86_64-linux-gnu.so apt_inst.so
ロケール変数を設定して、これを修正してください:
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"