蟒蛇-dev的安装错误:导入错误:没有模块名为apt_pkg(python-dev installa

2019-06-21 13:21发布

我的Debian用户,我想安装python-dev的,但是当我运行shell作为根的代码:

# 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

出了什么问题,我该怎么解决呢?

Answer 1:

确保你有一个工作的python-apt软件包。 你可以尝试,并删除并重新安装该软件包与apt_pkg.so不设解决问题。

apt-get install python-apt


Answer 2:

这样做,当我遇到这个问题sudo apt-get update 。 我ENV是debian8,与p​​ython2.7 + 3.4(默认值)+ 3.5。

下面的代码将只重新创建一个apt_pkg....so文件为Python 3.5

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-容易检查的最高Python版本,而不是当前正在使用的Python版本。



Answer 3:

这个解决它:

/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尽量得到正确的名称。



Answer 4:

出于某种原因,我安装了失踪apt_pkg.so在python3的dist-包目录。 ( 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

我不知道我的升级是否被打破,或者为什么是这种情况。 它发生尝试升级后(precise-> raring->量子升级)



Answer 5:

当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 

当我们用apt安装非发行python3版本,它会设置一个共享的模块目录是python3的最通常它会在/ usr / lib中/ python3。

大多数时候,这将是好的,但在某些情况下不同版本的Python的依赖于不同的库或共享对象/库然后其他Python版本不会使其他的答案已经指出,我们需要将.SO链接到正确Python版本。 因此,如果我们已经安装了64位系统上python3.6那么apt_pkg .SO链接会

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

但问题就在于,当我们安装一个新的Python版本的链接都将更新为点到最新版本的Python,从而导致apt_pkg模块没有被发现的错误。 通过检查蟒蛇船舶的版本与你的发行版,你可以创建链接,如上图所示。 或者我们使用的方法所提供的命令Python版本的选择,让.SO等环节;

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

因为Python将创建此链接到最新安装的Python版本,我们给出命令从3个Python版本,其中会选择给予最高版本选择的选项。



Answer 6:

如果你正在使用python 3.5,降级到3.4。 这是最保险的举动。

/usr/lib/python3/dist-packages你会看到*34m* 3.5不能使用的蟒蛇。 扎扎回答符号链接到它。



Answer 7:

不得已是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版本。



Answer 8:

除了使符号链接apt_pkg.so ,您可能希望apt_inst.so在相同的方式apt_pkg.so

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


Answer 9:

请尝试通过设置语言环境变量来解决这个问题:

export LC_ALL="en_US.UTF-8"

export LC_CTYPE="en_US.UTF-8"


Answer 10:

万一它有助于另一个,我终于解决了这个问题,这显然是由Python版本冲突引起的,通过重定向链接python3,然后将其重定向到正确的Python版本:

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

您可能需要输入正确的Python版本,发现:

python3 -V


文章来源: python-dev installation error: ImportError: No module named apt_pkg