命令行和REPL工作,但脚本得到' ModuleNotFoundError:没有模块命名' ?



我有以下目录结构。我在.

./ # current directory
__init__.py
module_1/
__init__.py
util
__init__.py  # contains f1(), f2(), ...
test.py

下面的python命令可以正常工作

python -c "from module_1.util import f1, f2"

在REPL中运行也可以。

Python 3.8.11 (default, Aug  6 2021, 09:57:55) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from module_1.util import f1, f2
>>>   

但是,执行test.py得到了ModuleNotFoundError: No module named 'module_1'的错误。Test.py只有一行

from module_1.util import f1, f2

运行脚本:

(base) PS C:UsersXsrc> python .module_1test.py
Traceback (most recent call last):
File ".module_1test.py", line 1, in <module>
from module1.util import f1, f2
ModuleNotFoundError: No module named 'module_1'

您可以尝试使用目录的名称"。",我将其命名为DOT dir,并执行如下操作:

from DOT.module_1.util import f1, f2

你可能需要将DOT dir或DOT dir的父目录添加到你的PYTHONPATH变量中。

同时在测试中添加__init__.py

和f1() f2()应该在util.py文件

./
setup.py
__init__.py
module_1/
__init__.py
util
__init__.py  # contains f1(), f2(), ...
test/
__init__.py
test.py

在test.py:

from module_1.util import f1,f2

insetup.py

from setuptools import setup
setup(name='module_1', packages=['module_1'])

"install"[link] withpython setup.py develop


您可以选择将导入添加到module_1/__init__.py,如下所示:

# module_1/__init__.py
from .util import f1, f2

允许您直接在test.py

中导入它
# test.py
from ..moduel_1 import f1, f2

相关内容

  • 没有找到相关文章

最新更新