Python不能在Ubuntu 14.04上运行(可靠)-可以';导入标准库
在服务器上完全卸载python并重新安装Python不能在Ubuntu 14.04上运行(可靠)-可以';导入标准库,python,ubuntu,Python,Ubuntu,在服务器上完全卸载python并重新安装python和pythondev之后,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
python
和pythondev
之后,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
Ubuntu(我可以说是Debian)默认附带了两个python包:python
和pythonmiminal
。我猜发生的事情是你删除了第一个,但是第二个不依赖于它,你仍然有一个不知怎么工作的提示
顾名思义,这是一个非常简单的python版本,包含的库数量非常有限。您应该能够运行一些简单的脚本,但仅此而已
pythondev
包包含编译扩展所需的文件(从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版本,只需确保它们不会取代主版本。啊,我想出来了。我在应用程序的虚拟环境中调用
chmod-R 770
,无意中禁止非root用户访问C标准库文件。事实证明,虚拟环境中非纯Python的标准库模块(例如datetime
module)符号链接回系统Python的.so
文件。因此,更改虚拟环境上的权限也会更改系统中相应模块的权限
因此,我可以通过运行chmod-R 775/path/to/virtualenv
来解决这个问题
[facepalm]我有一个相同症状的问题,我通过重新安装
python3
的stdlib
解决了这个问题:
apt-get install --reinstall libpython3.4-stdlib
如果出现以下错误:
/etc/init.d/apparmor: 35: .: Can't open /lib/apparmor/functions
尝试以下操作:(如果不起作用,请跳到解决方案)
任务:停止安装
键入以下命令:
debian/ubuntu
苏塞
任务:启动Apparmor
键入以下命令:
debian/ubuntu
苏塞
任务:重新启动Apparmor
键入以下命令:
debian/ubuntu
苏塞
任务:查看当前的Apparmor状态
键入以下命令:
debian/ubuntu
苏塞
按照以下指示:
如果您碰巧遇到AppArmor的任何问题,请首先重新安装出现问题之前清除/卸载的文件,然后运行此命令。它会解决这个问题。它在我的Ubuntu 15.10上运行
解决方案:
显示
dpkg-l | grep python
的输出python开发包通常只包含构建C扩展所需的内容,而不是python本身。如果你“卸载了python”,你甚至还会有一个解释器,这真是令人惊讶。我重新安装了python2.7,但仍然会出现同样的错误。我首先卸载python的唯一原因是因为我遇到了这些导入错误。dpkg--get selections | grep python
的输出是什么。如果输出非常长,则可以使用类似的方法
/etc/init.d/apparmor: 35: .: Can't open /lib/apparmor/functions
sudo /etc/init.d/apparmor stop
/etc/init.d/boot.apparmor stop
sudo /etc/init.d/apparmor start
/etc/init.d/boot.apparmor start
sudo /etc/init.d/apparmor restart
/etc/init.d/boot.apparmor restart
sudo /etc/init.d/apparmor status
/etc/init.d/boot.apparmor status
sudo apt-get install --reinstall -u AppArmor