Python不会导入函数

时间:2013-11-17 10:11:39

标签: python python-import

我有一个简单的time.py文件:

import datetime
import time
import re
def cnvrt1(time):
    hr = int(re.split(":",time)[0])
    min = int(re.split(":",time)[1])
    sec = int(re.split(" ",re.split(':',time)[2])[0])
    ampm = re.split(" ",re.split(':',time)[2])[1][0]
    zone = re.split(" ",re.split(':',time)[2])[2][0]
    if ampm == 'P' && hr < 12 :
        hr = hr + 12
    elif ampm == 'A' && hr == 12 :
        hr = hr - 12;
    dt = datetime.datetime.strptime(year=2013,month=10,day=22,hour=hr,minute=min,second=sec)
    res1 = time.mktime(dt.timetuple())
    if zone =='M':
        res1 = res1 -  3600000;
    if zone =='C' :
            res1 = res1 - 3600000*2;
    if zone == 'E' :
           res1 = res1 - 3600000*3;
    return res1

但是当我说from time import cnvrt1时,它会说ImportError: can't import name 'cnvrt1'。谁能指出我可能做错了什么?

1 个答案:

答案 0 :(得分:11)

您使用的是错误的名称。 已经标准库中名为time的模块,该模块可能已由您正在使用的其他代码导入。您甚至在此处发布的代码中使用import time,否则会创建循环导入。

最好的选择是将此模块重命名为其他内容。

如果您使用的是Python 3,并将time.py放在包中,则可以将导入限定在当前包中:

from .time import cnvrt1

请注意.。这将允许您保留当前名称;默认情况下,Python 3切换到使用绝对导入,并且包中的time模块不会与全局time模块冲突。

您还在模块中使用了无效的Python语法。 Python使用and,而不是&&用于布尔逻辑:

if ampm == 'P' && hr < 12 :

应该是

if ampm == 'P' and hr < 12: