Python:没有名为datetime的模块?


56

操作系统:Ubuntu 14.04 LTS

的Python:2.7.6

我的Gourmet Recipe Manager安装程序突然停止加载。在终端窗口中运行它时,在回溯结束时会得到以下信息:

import datetime as dt
ImportError: No module named datetime

据我所知,什么都没有改变,我的Python安装是最新的。它昨天只是退出工作。我当然希望能找到诊断和解决此问题的好方法!

更新:感谢所有答复!

蒂姆,很抱歉如果我在错误的地方问了这个问题。请简单地按照Ubuntu网站上的链接将其归为新手。

TheSchwa,我尝试了您的建议,并收到与上述相同的错误消息。

先生,该软件包似乎已安装,但是我不知道它是否已正确安装/配置。我怎么知道?

对于所有问题,我都很抱歉,但是我是RedHat的老家伙,已经离开Linux一段时间了。所有apt / dpkg东西对我来说都是新的。


虽然这只是此处的主题,但您可能会在Stack Overflow上获得更好的响应。另外,我无法复制它。没有错误可言,在相同的设置,你...
蒂姆·

如果您尝试import datetime使用python解释器会发生什么?您可以通过打开终端并执行来启动解释器python。您可以将其保留Ctrl+d
TheSchwa 2014年

根据dpkg -S $(python -c "import datetime; print datetime.__file__"),datetime模块来自libpython2.7-stdlib软件包。该软件包是否已正确安装?您可以尝试重新安装吗?
muru

好的,那么特定文件是/usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so您要的那个文件吗?您还会/usr/lib/python2.7/lib-dynload在的输出中看到列出的内容echo $(python -c "import sys; print sys.path")吗?顺便说一句,当您编辑帖子时,Stack Exchange系统实际上不会通知评论者。因此至少至少总是发布快速评论,例如“信息已更新问题”,这样我们就会收到通知,要求我们进行检查:)
TheSchwa 2014年

有关信息的更新问题。谢谢,TheSchwa!我的回答分别是“否”和“是”。现在,在哪里可以获取datetime.x86_64-linux.gnu.so的新副本?:)

Answers:


84

14.10更新后,这才刚发生在我身上,这似乎是因为我的虚拟环境具有旧的副本(/usr/bin/python2.7与新的二进制文件不同),不包含datetime内置文件,因此当他们无法在磁盘上的任何位置找到它时会出错。新的解释器似乎在没有任何文件I / O的情况下导入它(尝试在下面运行该文件strace进行检查)。

我通过激活并运行来修复每个虚拟环境:

$ cp /usr/bin/python2.7 $(which python2.7)

5
谢谢,但是为什么这是必要的呢?在升级时破坏python是讨厌的东西。
萨曼莎·阿特金斯

1
我尝试了此页面上的其他答案,但它们没有用,但是这个答案可以。
Michael Terry

2
知道了,cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same file但错误仍然存​​在
Umair

@Umair activate在这种情况下,您的脚本可能有问题-通常,在激活后,which python2.7它将显示环境Python的路径,而不是返回系统Python的路径。
布兰登·罗兹

29

您可以通过以下方法重新初始化virtualenv:

cd $VIRTUAL_ENV
virtualenv .

2
请注意,它应virtualenv .改为virtualenv ,
icyrock.com 2014年

4
这个答案似乎比布兰登·罗兹的答案更好。
azurkin 2015年

如果使用virtualenvwrapper可以做到cd $VIRTUAL_ENV
maciek's

OSError: [Errno 1] Operation not permitted
塞林

@Cerin,我遇到了同样的问题,我只是使用sudo virtualenv .来安装新的Python可执行文件,然后将整个更改回$VIRTUAL_ENV正确的目录所有者。
iMitwe


2

我遇到了同样的问题,最终决定它必须是AWS CLI,因为我注意到它具有自己的python目录。因此,我卸载了AWS CLI并重新安装了它,从而解决了该问题:

sudo pip uninstall awscli

sudo pip install awscli


0

由于我在14.04中发现了一些更改,因此您需要从根目录执行此操作:

仅针对日期时间:


ln -s /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/datetime.so

对于所有模块:


ln -s /usr/lib/python2.7/lib-dynload/audioop.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/audioop.so
ln -s /usr/lib/python2.7/lib-dynload/_bsddb.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/_bsddb.so
ln -s /usr/lib/python2.7/lib-dynload/bz2.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/bz2.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_cn.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_cn.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_hk.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_hk.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_iso2022.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/_codecs_iso2022.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_jp.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_jp.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_kr.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_kr.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_tw.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_tw.so
ln -s /usr/lib/python2.7/lib-dynload/crypt.x86_64-linux-gnu.so                         /usr/lib/python2.7/lib-dynload/crypt.so
ln -s /usr/lib/python2.7/lib-dynload/_csv.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/_csv.so
ln -s /usr/lib/python2.7/lib-dynload/_ctypes_test.x86_64-linux-gnu.so                  /usr/lib/python2.7/lib-dynload/_ctypes_test.so
ln -s /usr/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_ctypes.so
ln -s /usr/lib/python2.7/lib-dynload/_curses_panel.x86_64-linux-gnu.so                 /usr/lib/python2.7/lib-dynload/_curses_panel.so
ln -s /usr/lib/python2.7/lib-dynload/_curses.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_curses.so
ln -s /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/datetime.so
ln -s /usr/lib/python2.7/lib-dynload/dbm.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/dbm.so
ln -s /usr/lib/python2.7/lib-dynload/_elementtree.x86_64-linux-gnu.so                  /usr/lib/python2.7/lib-dynload/_elementtree.so
ln -s /usr/lib/python2.7/lib-dynload/fpectl.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/fpectl.so
ln -s /usr/lib/python2.7/lib-dynload/future_builtins.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/future_builtins.so
ln -s /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_hashlib.so
ln -s /usr/lib/python2.7/lib-dynload/_hotshot.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_hotshot.so
ln -s /usr/lib/python2.7/lib-dynload/_json.x86_64-linux-gnu.so                         /usr/lib/python2.7/lib-dynload/_json.so
ln -s /usr/lib/python2.7/lib-dynload/linuxaudiodev.x86_64-linux-gnu.so                 /usr/lib/python2.7/lib-dynload/linuxaudiodev.so
ln -s /usr/lib/python2.7/lib-dynload/_lsprof.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_lsprof.so
ln -s /usr/lib/python2.7/lib-dynload/mmap.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/mmap.so
ln -s /usr/lib/python2.7/lib-dynload/_multibytecodec.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/_multibytecodec.so
ln -s /usr/lib/python2.7/lib-dynload/_multiprocessing.x86_64-linux-gnu.so              /usr/lib/python2.7/lib-dynload/_multiprocessing.so
ln -s /usr/lib/python2.7/lib-dynload/nis.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/nis.so
ln -s /usr/lib/python2.7/lib-dynload/ossaudiodev.x86_64-linux-gnu.so                   /usr/lib/python2.7/lib-dynload/ossaudiodev.so
ln -s /usr/lib/python2.7/lib-dynload/parser.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/parser.so
ln -s /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/pyexpat.so
ln -s /usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/readline.so
ln -s /usr/lib/python2.7/lib-dynload/resource.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/resource.so
ln -s /usr/lib/python2.7/lib-dynload/_sqlite3.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_sqlite3.so
ln -s /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/_ssl.so
ln -s /usr/lib/python2.7/lib-dynload/termios.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/termios.so
ln -s /usr/lib/python2.7/lib-dynload/_testcapi.x86_64-linux-gnu.so                     /usr/lib/python2.7/lib-dynload/_testcapi.so

另外,如果您使用虚拟环境副本

cp $(which python2.7) /opt/graphite/bin/python

给你的环境


3
我升级到14.04,不需要做任何符号链接。您能否提供任何证据证明有必要像这样弄乱系统库,并且无法避免?
安德烈拉扎罗托

0

从Ubuntu 14.04升级到14.10时出现错误。我重新创建了virtualenv,问题消失了。因此,如果您正在使用virtualenv,则应重新创建它。

但是,如果您不这样做,我想重新安装项目就可以了。不要触摸任何系统库!它暂时可以工作,但可能会导致其他问题。


0

在某些Ubuntu升级后会发生这种情况。我最喜欢的解决方案是

$ virtualenv --no-site-packages path/to/virtualenv/dir

这将更新所需的所有内容,而不会删除已安装的软件包。

如果您有许多要更新的virtualenv,可以使用xargs

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.