我已经检查了很多以前曾问过的问题,但找不到解决我问题的方法。
我在根目录下的终端上运行 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()
答案 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。