ImportError:没有名为datetime的模块

时间:2014-09-25 05:25:15

标签: python ubuntu-12.04 ubuntu-14.04

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

 ImportError: No module named datetime

11 个答案:

答案 0 :(得分:59)

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

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

答案 1 :(得分:37)

只需运行此命令即可。它就像一个魅力!

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

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

More info here

答案 2 :(得分:10)

我试图通过这些步骤重新安装它。

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

它完美无缺。谢谢你们:))

答案 3 :(得分:8)

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

cd <virtualenv-dir>
virtualenv .

答案 4 :(得分:7)

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

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

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

rm ~/.local/share/letsencrypt -R

答案 5 :(得分:5)

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

virtualenv /path/to/old/virtualenv/

答案 6 :(得分:2)

...试

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

如果lib-dynload未包含在sys.path中,则不能import datetime

检查它!

答案 7 :(得分:1)

将Ubuntu从14.04升级到15.10也是如此。

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

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

(我使用virtualenvwrapper)

答案 8 :(得分:1)

  1. 清除虚拟环境,考虑VIRTUAL是虚拟环境的名称

    virtualenv --clear VIRTUAL

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

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

答案 9 :(得分:0)

如果您使用IntelliJ PyCharm或Idea以及从控制台/终端面对日期时间导入问题,它可以正常工作,您应该只复制/重新创建运行配置。

答案 10 :(得分:0)

我在尝试更新 LetsEncrypt 时遇到了这个错误,为了解决这个问题,我不得不回到 letencrypt 站点并重新安装 certbot,因为他们改变了它在 Ubuntu 上的工作方式。

https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx

这是我最终运行的命令,您的命令可能会有所不同。

snap 没有安装在我的 Ubuntu 实例中

static ColorImage Circulo(ColorImage img, int radius) {
    for (int x=0; x < img.getWidth(); x++ ) {
            for(int y=0; y < img.getHeight(); y++) {
                if((x - (img.getWidth()/2)) * (x - (img.getWidth()/2)) + (y - (img.getHeight()/2) )* (y - (img.getHeight()/2)) <= (radius*radius)) {
                    img.setColor(x, y, img.getColor(x, y));
                }else {
                    Color c = new Color (255, 255, 255);
                    img.setColor(x, y, c );     
                }
             }
        }
        return img;
    }

删除旧的certbot

sudo apt install snapd 
sudo snap install core; sudo snap refresh core

使“certbot”命令与旧配置一起工作

sudo apt-get remove certbot
sudo snap install --classic certbot

运行几个测试

sudo ln -s /snap/bin/certbot /usr/bin/certbot

实际更新并重启服务器

sudo certbot --nginx
sudo certbot renew --dry-run

更新定时任务

然后我需要更新我的 cronjob,以便它使用 sudo certbot renew sudo /opt/bitnami/ctlscript.sh restart nginx 而不是我之前使用的 certbot 的完整路径。

sudo certbot renew

crontab 的内容

crontab -e