ImportError:没有名为datetime的模块

akb*_*ile 36 python ubuntu-12.04 ubuntu-14.04

当我从12.04将Ubuntu升级到14.04时,这次我收到此错误:

 ImportError: No module named datetime
Run Code Online (Sandbox Code Playgroud)

erj*_*ang 59

当我创建virtualenv然后从12.04升级到14.04时,这发生在我身上.

我不得不删除我的virtualenv并重新创建它,在这之后,一切都恢复了.

  • 在我使用apt-get dist-upgrade我的Debian后,我遇到了同样的问题.解决方案是删除virtualenv并重新创建它. (3认同)
  • 从14.04升级到16.04后,我也发生了同样的事情 (3认同)
  • 谢谢你的暗示!只需运行`mkvirtualenv $ my_venv_name`就可以解决它. (2认同)

小智 38

只需运行此命令.它就像一个魅力!

$ cp /usr/bin/python2.7 $(which python2.7)
Run Code Online (Sandbox Code Playgroud)

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

更多信息在这里

  • **你应该喝咖啡!谢谢:)** - 也是由于将底层的"Ubuntu 14.04"升级到"Ubuntu 16.04.1"而没有触及虚拟环境. (6认同)

akb*_*ile 10

我尝试通过这些步骤重新安装它.

1. remove the old version of venv
2. virtualenv venv
3. .venv/activate/bin
4. pip install -r requirements/ requirements.txt
Run Code Online (Sandbox Code Playgroud)

而且效果很好.多谢你们 :)


Has*_*ani 8

只需通过以下方式重新初始化virtualenv:

cd <virtualenv-dir>
virtualenv .
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说只有一个变化.'virtualenv.' 给了我错误:'IOError:[Errno 40]太多级别的符号链接'所以我做了:'rm bin/python*'然后'virtualenv'.成功了. (2认同)

小智 7

如果您在尝试续订LetsEncrypt证书时遇到此错误(就像我一样),我在此处找到了解决方案:

https://askubuntu.com/a/850669/668101

删除此文件夹并重新运行LetsEncrypt,它将重新创建所有相关文件并避免此线程中的错误.

rm ~/.local/share/letsencrypt -R
Run Code Online (Sandbox Code Playgroud)


Seg*_*mel 5

如果您使用virtualenv,更新它可能会解决此问题

virtualenv /path/to/old/virtualenv/
Run Code Online (Sandbox Code Playgroud)