运行脚本时出现ModuleNotFoundError错误

时间:2020-04-19 22:19:48

标签: python python-3.x bash

我已经检查了很多以前曾问过的问题,但找不到解决我问题的方法。

我在根目录下的终端上运行 python3 folder1 / script1.py 命令 但出现错误 ModuleNotFoundError:没有名为“ folder2”的模块。 我在文件夹中添加了 __ init __。py ,但仍然找不到解决方案。

我的项目目录如下:

└── root
    ├── folder1
    │   ├── script1.py
    │   
    └── folder2
        ├── module1.py

module1.py:

def say_hello():
    print('hello')

scipt1.py:

from folder2 import module1

module1.say_hello()

enter image description here

2 个答案:

答案 0 :(得分:1)

通常,需要安装python模块才能让python找到它们。一条规则是python将在脚本的路径中查找模块是否存在。将CustomSearchViewModelFactory向下移动一个级别,确保您拥有一个script1.py,并且可以正常工作。

__init__.py

您还可以将└── root ├── script1.py │ └── folder2 ├── __init__.py ├── module1.py 的祖父母目录插入script1.py中。但是,解决问题的最佳方法实际上是通过添加setup.py使软件包可安装。一个非常原始的版本是

sys.path

您的目录可以是

import setuptools

setuptools.setup(
    name="Foobar",
    packages=setuptools.find_packages(),
    scripts=["folder1/script1.py"]
)

现在,您可以执行└── root ├── setup.py ├── folder1 │ ├── script1.py │ └── folder2 ├── __init__.py ├── module1.py 从开发目录中运行脚本。或python setup.py develop(通常是在您创建的虚拟录像机中)将其设置为标准安装。

答案 1 :(得分:0)

带有双下划线的init的正确用法;

__init__ 

我在文件夹中添加了_ init _.py,但仍然找不到解决方案。

您只需编写一个init。