python: AttributeError: module ‘calendar‘ has no attribute ‘month‘

python: AttributeError: module ‘calendar‘ has no attribute ‘month‘,第1张

概述每天进步一点点今天遇到一个小错误,AttributeError:module'calendar'hasnoattribute'month'解决办法:1、直接将文件名改一下,不要重名即可2、但是我非要头铁,文件跟模块同名,然后还要导入我要的同名模块,那咋办?首先找点理论知识补补脑子Python解释器是如何查找包和模块

每天进步一点点

今天遇到一个小错误,AttributeError: module 'calendar' has no attribute 'month'

解决办法:

1、直接将文件名改一下,不要重名即可

2、但是我非要头铁,文件跟模块同名,然后还要导入我要的同名模块,那咋办?

首先找点理论知识补补脑子

Python 解释器是如何查找包和模块的#

Python 执行一个 py 文件,无论执行的方式是用绝对路径还是相对路径,interpreter 都会把文件所在的 directory 加入 sys.path 这个 List 中,并且是索引为 0 的位置。Python 就是在 sys.path 中查找包和模块的。

# test.py# Coding:utf-8import sysprint(sys.path)print('Now in main.py')def hello():    print('michael hello')if __name__ == '__main__':    hello()# 执行 python test.py$ python test.py['/tmp/module-package/app', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages']Now in test.pymichael hello

Python 解释器查找包的顺序#

解释器查找包:

解释器会默认加载一些 modules,除了sys.builtin_module_names 列出的内置模块之外,还会加载其他一些标准库,都存放在sys.modules字典中。然后就是搜索 sys.path 路径下的模块了。

copy

In [3]: import sys In [4]: print(sys.builtin_module_names) ('_abc', '_ast', '_codecs', '_collections', '_functools', '_imp', '_io', '_locale', '_operator', '_signal', '_sre', '_stat', '_string', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'atexit', 'builtins', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'posix', 'pwd', 'sys', 'time', 'xxsubtype', 'zipimport')

这样的查找顺序将会导致同名包或模块被遮蔽。

看到这里就明白了

代码这样处理一下

import sys_cpath_ = sys.path[0]  # 获取当前路径sys.path.remove(_cpath_)  # 删除import calendarsys.path.insert(0, _cpath_)  # 恢复

sys.path.remove(_cpath_) #删除 这一条可以将path中的第一条删除
sys.path.insert(0, _cpath_) #恢复这一条可以将path恢复成原来的样子

程序总是将上级目录内容定位最高优先级,只要将它暂时屏蔽掉就可以了

参考链接:

https://www.cnblogs.com/michael-xiang/p/10466053.html

https://blog.csdn.net/qq_36530891/article/details/103892175

 

 

总结

以上是内存溢出为你收集整理的python: AttributeError: module ‘calendar‘ has no attribute ‘month‘全部内容,希望文章能够帮你解决python: AttributeError: module ‘calendar‘ has no attribute ‘month‘所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1184864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存