ModuleNotFoundError:没有名为“xxx”的模块;“xxx”不是包

2024-05-14 22:46:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个名为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之外,我已经给了所有东西。


Tags: inpyimporttxtisasopenusers
2条回答

发生这些错误的原因是名为premium.py的本地模块隐藏了您试图使用的已安装高级模块。当前目录位于sys.path之前,因此本地名称优先于已安装的名称(您可以阅读更多关于python如何查找包的信息)。

出现这种情况时,另一个调试技巧是仔细查看回溯,并意识到所讨论脚本的名称与您尝试导入的模块匹配:

请注意脚本中使用的名称:

File "F:/PyCharm Python Works/OpenCity/premium/premium.py", line 1, in <module>

您试图导入的模块:premium

将模块重命名为其他名称以避免名称冲突。

Python可能会在premium.py文件旁边(在Python 3的__pycache__目录中)生成一个premium.pyc文件。在重命名之后也删除它,因为解释器仍会引用该文件,从而复制错误。但是,如果py文件已被删除,__pycache__中的pyc文件不应影响您的代码。

也可以使用from然后import任何模块

这样做-

from premium import premium_users as pu

而不是-

import premium.premium_users as pu

相关问题 更多 >

    热门问题