Python 运行脚本时发生ModuleNotFoundError错误
我已经研究了很多以前被问过的问题,但我找不到解决问题的办法 我正在根目录的终端上运行python3folder1/script1.py命令 但是我得到了错误:没有名为“folder2”的模块。 我在文件夹中添加了_u; init _; py.py,但仍然找不到解决方案 我的项目目录如下所示:Python 运行脚本时发生ModuleNotFoundError错误,python,python-3.x,bash,Python,Python 3.x,Bash,我已经研究了很多以前被问过的问题,但我找不到解决问题的办法 我正在根目录的终端上运行python3folder1/script1.py命令 但是我得到了错误:没有名为“folder2”的模块。 我在文件夹中添加了_u; init _; py.py,但仍然找不到解决方案 我的项目目录如下所示: └── root ├── folder1 │ ├── script1.py │ └── folder2 ├── module1.py 模块1.p
└── root
├── folder1
│ ├── script1.py
│
└── folder2
├── module1.py
模块1.py:
def say_hello():
print('hello')
scipt1.py:
from folder2 import module1
module1.say_hello()
带双下划线的init的正确用法
__init__
我在文件夹中添加了uinit uupy.py,但仍然找不到解决方案
编写init时只需一个。通常,python需要安装python模块才能找到它们。一个附带规则是python将查看脚本的路径,以查看模块是否存在。将
script1.py
向下移动一个级别,确保您有一个\uuuu init\uuuu.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 develope
从开发目录运行脚本。或python setup.py安装
(通常在您创建的venv中)使其成为标准安装。请参阅此答案。我试过这个。它对我不起作用。我添加了空的init文件。但这不是解决办法。