导入错误:找不到datetime模块

40

当我从12.04将我的Ubuntu升级到14.04时,这次我收到了以下错误:

 ImportError: No module named datetime

1
你在做什么时遇到了这个错误? - g4ur4v
是的,我在升级它时和升级完成后都仍然存在错误。 - akbsmile
我使用的版本是Python 2.7.6。 - akbsmile
11个回答

61

当我创建了一个虚拟环境并将系统从12.04升级到14.04后,我遇到了这个问题。

我不得不删除我的虚拟环境并重新创建它,之后一切都正常了。


3
我在进行Debian的apt-get dist-upgrade升级后遇到了同样的问题。解决方法是删除虚拟环境,然后重新创建它。 - user4157482
2
谢谢你的提示!只需要运行 mkvirtualenv $my_venv_name 就解决了我的问题。 - Chriki
4
在我从14.04升级到16.04之后,发生了同样的事情。 - philx_x

40

只需运行此命令。它起作用就像魅力一样!

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

在14.10更新后我遇到了这个问题,看起来是因为我的虚拟环境中有旧版本的 /usr/bin/python2.7 —— 与新二进制文件不同——不包括内置的 datetime 模块,因此当它们在磁盘上找不到时会出现错误。新解释器似乎可以在没有任何文件读写的情况下导入它(尝试在 strace 下运行它进行检查)。

更多信息请参见这里


1
我进一步采取了这个步骤,“rm venv/bin/python*”,然后用“virtualenv venv”重新初始化。与重建整个虚拟环境相比,破坏性更小。 - Kevin
7
你值得拥有一杯咖啡!谢谢 :) 另外,这也可能是由于将底层的Ubuntu 14.04升级到Ubuntu 16.04.1而没有更改虚拟环境引起的。 - Flatron

10

只需重新初始化virtualenv:

cd <virtualenv-dir>
virtualenv .

2
这对我有用,但只做了一个更改。'virtualenv .' 给了我错误:'IOError:[Errno 40]符号链接级别太多',所以我做了:'rm bin / python *'然后'virtualenv .'成功。 - saschwarz

10

我尝试按照以下步骤重新安装它。

1. remove the old version of venv
2. virtualenv venv
3. .venv/activate/bin
4. pip install -r requirements/ requirements.txt

它完美地工作了。谢谢大家 :)


8
如果在尝试更新您的LetsEncrypt证书时(就像我一样),出现以下错误,请参考以下解决方案:
请删除此文件夹并重新运行LetsEncrypt,它会重新创建所有相关文件并避免出现此线程中的错误。具体解决方案请参考该网站:https://askubuntu.com/a/850669/668101
rm ~/.local/share/letsencrypt -R

1
好的提示!感谢提供信息!!唯一的问题是,“线程”这个术语并不适用于StackOverflow,因为它不是一个讨论论坛,而是一个问答网站 :) 除此之外,这真的很有帮助!谢谢! - Daniel Gray

6
如果您使用 virtualenv,更新它可能会解决此问题。
virtualenv /path/to/old/virtualenv/

3

Try...

>>> import sys
>>> sys.path
[... '/usr/local/lib/python2.7/lib-dynload',...]

如果在sys.path中没有包含lib-dynload,你将无法import datetime

请检查它!


需要创建lib-dynload目录并将Python-2.7。*/build/lib.linux-***-2.7的内容复制粘贴到其中。 - korwalskiy

1

我在将Ubuntu从14.04升级到15.10时遇到了同样的问题。

我通过升级pip,然后删除并重新创建虚拟环境来解决它:

$ easy_install --upgrade pip
$ rmvirtualenv <my_virtual_env>
$ mkvirtualenv <my_virtual_env>

我使用 virtualenvwrapper。

1
  1. 清空虚拟环境,假设VIRTUAL是虚拟环境的名称

    virtualenv --clear VIRTUAL

  2. 现在激活它并从requirements.txt安装

    source VIRTUAL/bin/activate pip install -r requirements.txt


0

如果您在使用IntelliJ PyCharm或Idea时遇到了datetime导入问题,而从控制台/终端可以正常工作,则应该只需复制/重新创建运行配置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接