【问题标题】:ModuleNotFoundError error when running script运行脚本时出现 ModuleNotFoundError 错误
【发布时间】:2020-08-02 08:41:03
【问题描述】:

我检查了许多以前提出的问题,但找不到解决问题的方法。

我在终端根目录下运行python3 folder1/script1.py命令 但我收到错误 ModuleNotFoundError: No module named '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()

【问题讨论】:

标签: python python-3.x bash


【解决方案1】:

双下划线 init 的正确用法;

__init__ 

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

你只用一个来写 init。

【讨论】:

  • 我添加了空的初始化文件。但这不是解决方案。
【解决方案2】:

一般情况下,python 需要安装 python 模块才能找到它们。一个附带规则是,python 将查看脚本的路径以查看模块是否存在。将script1.py 向下移动一个级别,确保您有一个__init__.py,它会起作用。

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

您还可以让script1.py 将其祖父目录插入sys.path。但真正解决问题的最佳方法是通过添加 setup.py 使软件包可安装。一个极其原始的版本是

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 从您的开发目录运行您的脚本。或 python setup.py install(通常在您创建的 venv 中)使其成为标准安装。

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 2018-11-17
    • 2019-03-22
    • 1970-01-01
    • 2021-03-17
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多