Python 3—找不到模块

2024-06-01 14:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下文件结构。。。

 > Boo
    > ---modA
    > ------__init__.py
    > ------fileAA.py
    > ---modB
    > ------__init__.py
    > ------fileBB.py

当我在fileBB.py里面的时候

from modA.fileAA import <something>

我得到以下错误:

from modA.fileAA import <something>
ModuleNotFoundError: No module named 'modA'

注意,__init__.py文件是空的,并且使用Python 3。

我错过了什么或做错了什么?


Tags: 文件nofrompyimportinit错误结构
3条回答

几乎可以肯定,这是一个PYTHONPATH问题,即从何处运行脚本。一般来说,这是可行的:

$ ls modA/
fileAA.py  __init__.py
$ cat modA/fileAA.py 
x = 1
$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04) 
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from modA.fileAA import x
>>> x
1

您可以查看sys.path来检查您的路径。

当您在fileBB.py中编写代码并尝试导入fileAA.py中定义的变量/函数/类等时,实际上需要执行以下操作:

  • 首先在Boo中创建一个空的__init__.py

  • 然后尝试这样导入:

    from ..modA.fileAA import <something>
    

根据我写软件包的经验,它应该工作得很好。

Note: Please comment if it doesn't work, I will help but this should not happen.

main_package
├── __init__.py
├── modA
│   ├── fileAA.py
│   └── __init__.py
└── modB
    ├── fileBB.py
    └── __init__.py

在根目录中有一个__init__.py,然后使用import-like

from main_package.modA.fileAA import something

main_package中使用driver文件运行,然后运行,它就会工作。

相关问题 更多 >