【问题标题】:Python not working on Ubuntu 14.04 (trusty) - Can't import standard libraryPython 无法在 Ubuntu 14.04(值得信赖)上运行 - 无法导入标准库
【发布时间】:2016-01-18 05:03:24
【问题描述】:

在服务器上完全卸载 python 并重新安装 pythonpython-dev 后,Python 的行为有问题。最明显的错误是我无法从标准库中导入一些模块。例如,我无法导入 datetime 和 encodings 模块。

[sloria@osf-staging ~]$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named datetime
>>> import encodings
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named encodings

这使得无法使用 pip、virtualenv 等。为什么会发生这种情况?

编辑:这是dpkg -l | grep python的输出:

[sloria@osf-staging python2.7]$ dpkg -l | grep python
ii  dh-python                            1.20140128-1ubuntu8                 all          Debian helper tools for packaging Python libraries and applications
ii  libpython-dev:amd64                  2.7.5-5ubuntu3                      amd64        header files and a static library for Python (default)
ii  libpython-stdlib:amd64               2.7.5-5ubuntu3                      amd64        interactive high-level object-oriented language (default python version)
ii  libpython2.7:amd64                   2.7.6-8                             amd64        Shared Python runtime library (version 2.7)
ii  libpython2.7-dev:amd64               2.7.6-8                             amd64        Header files and a static library for Python (v2.7)
ii  libpython2.7-minimal:amd64           2.7.6-8                             amd64        Minimal subset of the Python language (version 2.7)
ii  libpython2.7-stdlib:amd64            2.7.6-8                             amd64        Interactive high-level object-oriented language (standard library, version 2.7)
ii  libpython3-stdlib:amd64              3.4.0-0ubuntu2                      amd64        interactive high-level object-oriented language (default python3 version)
rc  libpython3.3-minimal:amd64           3.3.2-7ubuntu3.1                    amd64        Minimal subset of the Python language (version 3.3)
ii  libpython3.4-minimal:amd64           3.4.0-2ubuntu1                      amd64        Minimal subset of the Python language (version 3.4)
ii  libpython3.4-stdlib:amd64            3.4.0-2ubuntu1                      amd64        Interactive high-level object-oriented language (standard library, version 3.4)
ii  python                               2.7.5-5ubuntu3                      amd64        interactive high-level object-oriented language (default version)
ii  python-apt                           0.9.3.5                             amd64        Python interface to libapt-pkg
ii  python-apt-common                    0.9.3.5                             all          Python interface to libapt-pkg (locales)
ii  python-chardet                       2.0.1-2build2                       all          universal character encoding detector
ii  python-colorama                      0.2.5-0.1ubuntu1                    all          Cross-platform colored terminal text in Python - Python 2.x
ii  python-dev                           2.7.5-5ubuntu3                      amd64        header files and a static library for Python (default)
ii  python-distlib                       0.1.8-1                             all          low-level components of python distutils2/packaging
ii  python-html5lib                      0.999-2                             all          HTML parser/tokenizer based on the WHATWG HTML5 specification (Python 2)
ii  python-minimal                       2.7.5-5ubuntu3                      amd64        minimal subset of the Python language (default version)
ii  python-pip                           1.5.4-1                             all          alternative Python package installer
ii  python-pkg-resources                 3.3-1ubuntu1                        all          Package Discovery and Resource Access using pkg_resources
ii  python-requests                      2.2.1-1                             all          elegant and simple HTTP library for Python, built for human beings
ii  python-setuptools                    3.3-1ubuntu1                        all          Python Distutils Enhancements (setuptools compatibility)
ii  python-six                           1.5.2-1                             all          Python 2 and 3 compatibility library (Python 2 interface)
rc  python-support                       1.0.15                              all          automated rebuilding support for Python modules
rc  python-twisted-core                  13.2.0-1ubuntu1                     all          Event-based framework for internet applications
ii  python-urllib3                       1.7.1-1build1                       all          HTTP library with thread-safe connection pooling for Python
ii  python2.7                            2.7.6-8                             amd64        Interactive high-level object-oriented language (version 2.7)
ii  python2.7-dev                        2.7.6-8                             amd64        Header files and a static library for Python (v2.7)
ii  python2.7-minimal                    2.7.6-8                             amd64        Minimal subset of the Python language (version 2.7)
ii  python3                              3.4.0-0ubuntu2                      amd64        interactive high-level object-oriented language (default python3 version)
ii  python3-apparmor                     2.8.95~2430-0ubuntu5                amd64        AppArmor Python3 utility library
ii  python3-dbus                         1.2.0-2build2                       amd64        simple interprocess messaging system (Python 3 interface)
ii  python3-gdbm:amd64                   3.4.0-0ubuntu1                      amd64        GNU dbm database support for Python 3.x
ii  python3-gi                           3.12.0-1                            amd64        Python 3 bindings for gobject-introspection libraries
ii  python3-libapparmor                  2.8.95~2430-0ubuntu5                amd64        AppArmor library Python3 bindings
ii  python3-minimal                      3.4.0-0ubuntu2                      amd64        minimal subset of the Python language (default python3 version)
ii  python3-newt                         0.52.15-2ubuntu5                    amd64        NEWT module for Python3
ii  python3-pkg-resources                3.3-1ubuntu1                        all          Package Discovery and Resource Access using pkg_resources
ii  python3-problem-report               2.14.1-0ubuntu3.2                   all          Python 3 library to handle problem reports
rc  python3.2                            3.2.3-6ubuntu3.5                    amd64        Interactive high-level object-oriented language (version 3.2)
rc  python3.2-minimal                    3.2.3-6ubuntu3.5                    amd64        Minimal subset of the Python language (version 3.2)
rc  python3.3                            3.3.2-7ubuntu3.1                    amd64        Interactive high-level object-oriented language (version 3.3)
rc  python3.3-minimal                    3.3.2-7ubuntu3.1                    amd64        Minimal subset of the Python language (version 3.3)
ii  python3.4                            3.4.0-2ubuntu1                      amd64        Interactive high-level object-oriented language (version 3.4)
ii  python3.4-minimal                    3.4.0-2ubuntu1                      amd64        Minimal subset of the Python language (version 3.4)

【问题讨论】:

  • 显示dpkg -l | grep python的输出
  • python-dev 包通常只包含构建 C 扩展所需的东西,而不是 python 本身。如果您“卸载 python”,您甚至还有一个解释器,这令人惊讶。

标签: python ubuntu


【解决方案1】:

Ubuntu(据我所知,还有 Debian)默认带有两个 python 包:pythonpython-minimal。我猜发生的事情是您删除了第一个,但由于第二个不依赖于它,您仍然有一个以某种方式工作的提示。

顾名思义,这是一个非常小的 Python 版本,包含的库数量非常有限。您应该能够运行一些简单的脚本,但仅此而已。

python-dev 包包含编译扩展所需的文件(从 pip 安装包时可能需要它),但不会替换解释器。

要回到正轨,您只需再次安装“完整”python 版本:

$ sudo apt-get install python-2.7

这只会重新安装 python,而不是在此过程中删除的任何已安装的库。要获取已删除内容的列表,您可以检查 /var/log/apt/history.log 的输出。您将看到类似以下的条目:

Start-Date: 2014-04-21  12:29:19
Commandline: apt-get remove python3.4-dev
Remove: python3.4-dev:amd64 (3.4.0-2ubuntu1), python3-dev:amd64 (3.4.0-0ubuntu2)
End-Date: 2014-04-21  12:29:30

我不知道是什么让你删除了 python,但这通常是个坏主意。有一些应用程序依赖于显式的 python 版本(以及与它们捆绑的库),在桌面版本中尤其如此。当然你也可以安装其他的python版本,只要确保它们不替换主版本即可。

【讨论】:

  • 我重新安装了python2.7,但我仍然得到同样的错误。我首先卸载 python 的唯一原因是我遇到了那些导入错误。
  • dpkg --get-selections | grep python 的输出是什么。如果输出很长,你可以使用 pastebin.com 之类的东西
【解决方案2】:

我遇到了同样症状的问题,我通过重新安装python3stdlib解决了这个问题:

apt-get install --reinstall libpython3.4-stdlib

【讨论】:

    【解决方案3】:

    啊,我想通了。通过在我的应用程序的虚拟环境中调用 chmod -R 770,我无意中禁止了非 root 用户访问 C 标准库文件。事实证明,不是纯 Python 的虚拟环境中的标准库模块(例如 datetime 模块)符号链接回系统 Python 的 .so 文件。所以改变虚拟环境的权限也改变了系统Python中相应模块的权限。

    因此,我可以通过运行 chmod -R 775 /path/to/virtualenv 来解决问题。

    [捂脸]

    【讨论】:

      【解决方案4】:

      如果出现以下错误:

       /etc/init.d/apparmor: 35: .: Can't open /lib/apparmor/functions
      

      尝试以下方法:(如果不起作用,请跳至解决方案)

      任务:停止 Apparmor

      键入以下命令:

      debian/ubuntu

       sudo /etc/init.d/apparmor stop
      

      使用

       /etc/init.d/boot.apparmor stop
      

      任务:启动 Apparmor

      键入以下命令:

      debian/ubuntu

       sudo /etc/init.d/apparmor start
      

      使用

       /etc/init.d/boot.apparmor start
      

      任务:重启 Apparmor

      键入以下命令:

      debian/ubuntu

       sudo /etc/init.d/apparmor restart
      

      使用

        /etc/init.d/boot.apparmor restart
      

      任务:查看当前 Apparmor 状态

      键入以下命令:

      debian/ubuntu

       sudo /etc/init.d/apparmor status
      

      使用

       /etc/init.d/boot.apparmor status
      

      按照以下说明: http://www.cyberciti.biz/faq/suse-ubuntu-linux-start-stop-restart-apparmor-command/

      如果您碰巧在使用 AppArmor 时遇到任何问题,请首先重新安装您在出现问题之前清除/卸载的文件,然后运行此命令。它会解决它。它适用于我的 Ubuntu 15.10。

      解决方案:

        sudo apt-get install --reinstall -u AppArmor
      

      【讨论】:

        猜你喜欢
        • 2016-08-04
        • 2014-08-08
        • 1970-01-01
        • 2015-10-14
        • 1970-01-01
        • 2016-02-16
        • 2016-04-01
        • 1970-01-01
        相关资源
        最近更新 更多