【问题标题】:python ModuleNotFoundError error in absolute import package?绝对导入包中的python ModuleNotFoundError错误?
【发布时间】:2021-09-23 05:52:06
【问题描述】:

我有这样的文件结构。

.
└── E:\test
    ├
    ├── M2
    │   └── demo.py
    |       
    │       
    └── MA
    │    └── MA1
    │    │   ├── __init__.py
    │    │   │
    │    │   └── ma1.py
    │    ​│__ __init__.py

ma​​1.py

def foo():
    print("I am here")

demo.py

from MA.MA1.ma1 import foo
print(foo())

我用的是python3.8和win10系统。
在cmd中我尝试cd test目录和python .\M2\demo.py,它显示错误?

PS E:\test> python .\M2\demo.py    
Traceback (most recent call last):
  File ".\M2\demo.py", line 1, in <module>
    from MA.MA1.ma1 import foo
ModuleNotFoundError: No module named 'MA'

【问题讨论】:

    标签: python python-3.x import


    【解决方案1】:

    python 解释器不会搜索 test\ 目录中的模块,因为您从 test\M2\ 执行脚本。您可以通过将目录“test”添加到PYTHONPATH 变量来告诉python 从test\ 搜索。 对于 windows 命令行:

    set PYTHONPATH=%PYTHONPATH%;E:\test
    

    对于linux终端:

    export PYTHONPATH=path_to_test_dir
    

    【讨论】:

    • 对不起,我喜欢上一个答案。
    【解决方案2】:

    记住两件事:

    1- Python 搜索 sys.path 以查找模块和包。

    2- 当您像以前一样运行脚本时,会将其目录添加到sys.path。所以你必须手动添加MA 所在的目录。在demo.py 中执行以下操作:

    import sys
    sys.path.insert(0, r'E:\test')
    
    from MA.MA1.ma1 import foo
    print(foo())
    

    您也可以设置PYTHONPATH 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2010-10-09
      相关资源
      最近更新 更多