【问题标题】:Module Not Found but package appears in sys.path未找到模块但包出现在 sys.path 中
【发布时间】:2023-03-15 23:25:01
【问题描述】:

这是我第一次尝试以组织良好的结构编写代码,但在导入时遇到了麻烦。抱歉,如果这是一个愚蠢的问题。我要导入的模块在smureader包下的test包中

C:\User\Documents\Python Scripts\smureader\test\unittestExample.py

当我运行 sys.path:

['C:\\User\\Documents\\Python Scripts\\smureader',
 'C:\\User\\Documents\\Python Scripts\\smureader',
 'C:\\Progra~1\\Anaconda3\\python37.zip',
 'C:\\Progra~1\\Anaconda3\\DLLs',
 'C:\\Progra~1\\Anaconda3\\lib',
 'C:\\Progra~1\\Anaconda3',
 '',
 'C:\\Progra~1\\Anaconda3\\lib\\site-packages',
 'C:\\Progra~1\\Anaconda3\\lib\\site-packages\\win32',
 'C:\\Progra~1\\Anaconda3\\lib\\site-packages\\win32\\lib',
 'C:\\Progra~1\\Anaconda3\\lib\\site-packages\\Pythonwin',
 'C:\\Progra~1\\Anaconda3\\lib\\site-packages\\IPython\\extensions',
 'C:\\Users\\J26612\\.ipython']

但是当我尝试从 unittestExample.py 导入一个类时,我得到一个错误

from smureader.test.unittestExample import TestStringMethods

Traceback (most recent call last):File "<ipython-input-4-5cc4a996aaee>", line 1, in <module>
from smureader.test.unittestExample import TestStringMethods ModuleNotFoundError: No module named 'smureader'

我真的很茫然。一直在尝试阅读sys.pathPYTHONPATH 和导入,但只是变得更加困惑。这只是一个例子,我不能从我的结构中的任何地方导入我的模块。请有人告诉我我做错了什么。

【问题讨论】:

  • smureader 的父级需要在路径中,所有 .py 文件和包含__init__.py 文件的子目录现在都是模块。
  • 它有助于将图像拉入文本并直接与问题一起发布。目录树可能需要一点 ascii 艺术。
  • 请不要将图像用于错误消息、代码和简单的目录结构:复制粘贴到代码块中,并为目录结构使用一点 ASCII 艺术。绝对不要提供外部图片的链接。无法搜索图像,并且并非每个浏览器(屏幕阅读器)都可以显示它们。

标签: python pythonpath sys.path


【解决方案1】:

扫描sys.path 中的目录以查找 .py 文件和也包含__init__.py 文件的子目录。这些成为可导入的模块和包。您需要路径中 smureader 目录的父目录。警告如果你有其他 .py 文件隐藏 stdlib 或安装的模块,你最终可能会导入错误的东西。

【讨论】:

  • 当我使用 sys.path.append() 临时添加 smureader 的父级时,一切正常!谢谢你的提示。但是,现在我无法将父级添加到我的 PYTHONPATH (grr) 中。我正在使用相同的步骤来添加孩子,但它不起作用
  • 您需要在调用脚本之前将其添加到 PYTHONPATH。有一种机制可以将其添加到您的登录名中,但我不记得它了。最后,让您的东西可安装并进行安装是黄金标准。
【解决方案2】:

您的文件smureader 应与导入它的文件位于同一目录中,否则您必须包含完整路径。

还有一种方法,就是把你的文件放到这个目录下:

Python\Python38-32\Lib\site-packages

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多