繁体   English   中英

运行脚本时出现 ModuleNotFoundError 错误

[英]ModuleNotFoundError error when running script

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

我在根目录的终端上运行python3 folder1/script1.py命令,但出现错误ModuleNotFoundError: No module named 'folder2' 我将__ init __.py添加到文件夹中,但仍然找不到解决方案。

我的项目目录是这样的:

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

模块1.py:

def say_hello():
    print('hello')

scipt1.py:

from folder2 import module1

module1.say_hello()

在此处输入图像描述

一般需要安装 python 模块才能找到 python 模块。 一个附带规则是 python 将查看脚本的路径以查看模块是否存在。 script1.py下移一级,确保你有一个__init__.py并且它会工作。

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

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

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 中)使其成为标准安装。

双下划线 init 的正确用法;

__init__ 

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

你只用一个写 init 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM