Python-未找到模块
我是Python的初学者。在开始之前,这里是我的Python文件夹结构Python-未找到模块,python,module,Python,Module,我是Python的初学者。在开始之前,这里是我的Python文件夹结构 -project ----src ------model --------order.py ------hello-world.py 在src下,我有一个名为model的文件夹,其中有一个名为order.py的Python文件,其内容如下: class SellOrder(object): def __init__(self,genericName,brandName): self.genericN
-project
----src
------model
--------order.py
------hello-world.py
在src
下,我有一个名为model
的文件夹,其中有一个名为order.py的Python文件,其内容如下:
class SellOrder(object):
def __init__(self,genericName,brandName):
self.genericName = genericName
self.brandName = brandName
下一个myhello world.py
位于src
文件夹中,比order.py高一级:
import model.order.SellOrder
order = SellOrder("Test","Test")
print order.brandName
无论何时运行python hello world.py
都会导致错误
Traceback (most recent call last):
File "hello-world.py", line 1, in <module>
import model.order.SellOrder
ImportError: No module named model.order.SellOrder
ModuleNotFoundError: No module named 'requests.adapters'; 'requests' is not a package
回溯(最近一次呼叫最后一次):
文件“helloworld.py”,第1行,在
导入model.order.SellOrder
ImportError:没有名为model.order.SellOrder的模块
有什么我遗漏的吗?您需要在层次结构中的每个文件夹中都有一个名为\uuuu init\uuuuuuy.py
(每侧两个下划线)的文件,所以在src/
中有一个,在model/
中有一个。这就是python希望知道它应该访问特定文件夹的原因。这些文件本应包含初始化指令,但即使创建为空,也可以解决此问题。Python中的所有模块都必须具有特定的目录结构
在model
目录下创建一个名为\uuuuu init\uuuuuuuupy.py
的空文件,使目录结构如下所示:
.
└── project
└── src
├── hello-world.py
└── model
├── __init__.py
└── order.py
另外,在您的hello world.py
文件中,将导入语句更改为以下内容:
from model.order import SellOrder
这应该可以解决问题
注意:如果要将模型
目录放置在其他位置(不在同一目录分支中),则必须使用sys.path
修改python路径。您需要确保为所有版本的python安装了该模块
通过运行:
pip卸载模块名称
如果已安装,它将询问您是否要删除它。我的问题是它是为python安装的,但不是为python3安装的。要检查python3是否安装了模块,请运行:
python3-mpip卸载模块名
执行此操作后,如果发现一个或两个版本未安装模块,请使用这两个命令安装模块
- pip安装模块名称
- python3-m pip安装模块名称
尝试使用以下方法添加路径后:
pip show
在命令提示符下使用
sys.path.insert(0, "/home/myname/pythonfiles")
但没有起作用。在尝试再次使用conda而不是pip安装模块时,也出现了SSL错误
我只是复制了路径“我的所在”中找不到的模块
C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages
所以我把它复制到了'C:\Users\user\Anaconda3\Lib\site packages'
我也有同样的错误。对于那些在不同服务器上运行python脚本的人,请检查在shebang中是否正确指定了python路径。对于我来说,在每台服务器上它都位于不同的目录中。你需要导入该函数,以便程序知道我需要什么下面是一个例子:
import os
import pyttsx3
我首先遇到了同样的问题,然后我导入了这个函数,它可以工作,所以我建议您尝试一下它,如果它是您的根模块,只需将它添加到PYTHONPATH(PyCharm通常会这样做)
export PYTHONPATH=$PYTHONPATH:
对于Docker:
ENV PYTHONPATH="${PYTHONPATH}:<root module path in container>"
ENV PYTHONPATH=“${PYTHONPATH}:”
我只将Python作为第二语言使用,可能犯了一个新手错误。我遇到了类似的问题,我的错误是调用:
import requests
我弄错了
Traceback (most recent call last):
File "hello-world.py", line 1, in <module>
import model.order.SellOrder
ImportError: No module named model.order.SellOrder
ModuleNotFoundError: No module named 'requests.adapters'; 'requests' is not a package
结果是我在名为“requests.py”的文件夹中创建的文件“发生了冲突。重命名该文件使其再次工作。如果init.py?\uuu init\uuuuuuuuuupy
可以为空,也可以包含代码,则内容应该是什么。项目通常在包级别公开其主/公共类。在您的情况下,您可以从model.order import SellOrder
添加,以便其他代码可以从project import SellOrder
执行,而不是从project.model.order import SellOrder
执行。此外,不具有src
目录也是一种良好的做法。这也是有道理的,因为如果你将代码导入到其他地方,你应该能够导入project.model,而不是project.src.model。在src
中,不需要init.py
,请参见@Rafazz的回答这不是问题的所在,这对我很有帮助。这些模块通过PyCharm运行,但当我通过终端运行程序时,它显示了ModuleNotFoundError
,这个解决方案解决了我的问题。这就是为什么你永远不应该使用#/usr/bin/python
但是#/usr/bin/env python
(或用于python3的#!/usr/bin/env python3
,或可能用于特定版本的#!/usr/bin/env python3.8
)。这在使用虚拟环境时也会起作用,而第一种形式则不起作用。