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

我是Python的初学者。在开始之前,这里是我的Python文件夹结构

-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
下一个my
hello 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
)。这在使用虚拟环境时也会起作用,而第一种形式则不起作用。