python - ModuleNotFoundError:没有名为“xxx”的模块;'xxx' 不是一个包
问题描述
我正在创建一个名为 OpenCity 的项目,其中包含高级版本。高级套餐是问题所在。
项目层次结构是:
opencity // is a project in PyCharm 2019.3
premium // is a package
__init__.py // is a module
premium.py // is a module
premium_user.py // is a module
premium_user.txt // is a text file
高级用户.py:
import random as ran
def premium_users_adder():
premium_user1a = open('premium_user.txt', 'a')
# premium_user1w = open('premium_user.txt', 'w')
# premium_user1r = open('premium_user.txt', 'r')
p2 = int(input("How many members do you want to add to premium_users to database? "))
p1 = []
p3 = []
for i in range(p2):
member = input("Type the person's name. ")
p1.append(member)
id1 = ran.randint(100000000, 99999999999)
p3.append(str(id1))
for i, e in zip(p1, p3):
premium_user1a.write(i + ' ' + e + '\n')
premium_user1a.close()
print()
print("Done")
def premium_users_checker():
premium_user1r = open('premium_user.txt', 'r')
p2 = []
for data in premium_user1r:
p2.append(data)
print(p2)
溢价.py:
import premium.premium_users as pu
pu.premium_users_adder()
pu.premium_users_checker()
运行 premium.py 时出错:
Traceback (most recent call last):
File "F:/PyCharm Python Works/OpenCity/premium/premium.py", line 1, in <module>
import premium.premium_users as pu
File "F:\PyCharm Python Works\OpenCity\premium\premium.py", line 1, in <module>
import premium.premium_users as pu
ModuleNotFoundError: No module named 'premium.premium_users'; 'premium' is not a package
premium_users.txt
除了包含高级代码的内容之外,我已经给出了所有内容。
解决方案
发生这些错误是因为您的本地模块premium.py
隐藏了您尝试使用的已安装高级模块。当前目录附加到sys.path
,因此本地名称优先于安装名称(您可以在此处阅读有关python 如何查找包 的更多信息)。
出现这种情况时,一个额外的调试技巧是仔细查看 Traceback,并意识到您的脚本名称与您尝试导入的模块匹配:
注意您在脚本中使用的名称:
File "F:/PyCharm Python Works/OpenCity/premium/premium.py", line 1, in <module>
您尝试导入的模块:premium
将您的模块重命名为其他名称以避免名称冲突。
Python 可能会premium.pyc
在您的文件旁边生成一个premium.py
文件(__pycache__
在 Python 3 的目录中)。重命名后也将其删除,因为解释器仍将引用该文件,从而重现错误。但是,如果 py 文件已被删除,则该pyc
文件__pycache__
不应影响您的代码。
推荐阅读
- java - 我可以避免使用“泛型”或更好的“设计模式”进行显式转换吗?
- javascript - 优化用字典替换文本的性能
- python - 如何在 Tkinter 中将 Entry() 输入的变量类型更改为浮点类型
- input - 我使用 appendChild 向开启窗口添加了一个单选按钮。但是在 MS Edge 中它不起作用
- python - 如何在循环中填充熊猫数据框?
- node.js - 使用 multer 时图像被保存为 id
- postgresql - Postgres在docker启动期间抱怨几何类型不存在,然后决定它存在
- java - 删除最后一个空行
- web-scraping - Chrome 浏览器找到对 API 的调用?他
- linux - Cron 失败并显示消息 Superset: command not found