解决 Python3 报错:AttributeError module ‘upyun’ has no attribute ‘UpYun’

操作背景

操作系统:Windows 7 中文家庭版 64 位

Python 版本:Python 3.6.8rc1

报错详情

我使用又拍云 API 和 Python 写了一个程序,该程序需要用到又拍云的 Python 模块 upyun. 但是,今天我将该程序复制到另一个文件夹下后,再运行却报错:

AttributeError: module 'upyun' has no attribute 'UpYun'

报错截图如图 1 所示:

图片
图 1. 点击查看大图

解决过程

由于我之前已经在这台机器上导入了又拍云的 upyun 模块,而报错说 “upyun 模块没有 UpYun 属性”。于是,我先尝试卸载并重新安装 upyun 模块:

pip3 uninstall upyun
pip3 install upyun

但是,这并未能解决上述问题,前述报错依然存在。
随后,我检查了产生报错的程序本身,该程序文件名是:

postsun.py

这个文件名称与报错中显示的 upyun 模块的名称并不冲突。但在 postsun.py 的同级目录下还有一个名称为 upyun.py 的文件,该文件的文件名与 upyun 模块的名称重复。
随后,我将 postsun.py 移动到一个单独的文件夹后,postsun.py 可以正常运行,不再有报错提示。

至此,问题解决。

总结

根据我在测试环境中得到的测试结果,在运行 Python3 代码(Python2 可能也类似,但是我没有进行实际测试)时,若要运行的程序的文件名与其中导入的 Python 模块的名称相同或者要运行的程序的同级目录下含有和要运行的程序中导入的 Python 模块的名称相同的 .py 格式的文件,则就会产生前述报错,例如图 2:

图片
图 2. 点击查看大图

在图 2 所示的环境中,由于我在 postsun.py 中使用 import upyun 导入了 upyun 模块,而 postsun.py 的同级目录下有一个 .py 格式的同名文件 upyun.py, 因此,运行 postsun.py 会报错:

AttributeError: module 'upyun' has no attribute 'UpYun'

而如果把 upyun.py 改成其他后缀,保持文件名等其他环境不变,例如图 3:

图片
图 3. 点击查看大图

此时运行 postsun.py 就不会产生报错。

EOF


荒原之梦网全部内容均为原创,提供了涵盖考研数学基础知识、考研数学真题、考研数学练习题和计算机科学等方面,大量精心研发的学习资源。

意见反馈 | 内容纠错 | 微信 | QQ | 公众号 | 知乎 | 微博 | 博客园 |CSDN | B 站 | 电子邮件
豫 ICP 备 17023611 号-1 | 公网安备 - 荒原之梦 豫公网安备 41142502000132 号 | SiteMap
Copyright © 2017-2024 ZhaoKaifeng.com 版权所有 All Rights Reserved.

Copyright © 2024   zhaokaifeng.com   All Rights Reserved.
豫ICP备17023611号-1
 豫公网安备41142502000132号

荒原之梦 自豪地采用WordPress