【问题标题】:Import error from parent directory in Python 3.6.9从 Python 3.6.9 中的父目录导入错误
【发布时间】:2021-11-15 02:32:09
【问题描述】:

问题

嗨。我在导入我编写的模块时遇到问题。我要导入的模块名为neural_networks,在neural_networks.py 文件中定义。

目录树

├── neural_networks.py
└── directory
    ├── neural_networks.py
    └── calling_module.py

neural_networks.py

def function_to_import():
    pass

我阅读了5.7. Package Relative Imports 部分中的 Python 3 文档,并应用了那里所写的内容,但并没有完全奏效。

calling_module.py

// ImportError: attempted relative import with no known parent package
from . import neural_networks

// SyntaxError: invalid syntax
import ..neural_networks

// ImportError: attempted relative import with no known parent package
from ..directory import neural_networks

// SyntaxError: invalid syntax
import .neural_networks

// works and i can use function_to_import() using neural_networks.function_to_import()
import neural_networks

问题

如何在calling_module 中正确导入和使用neural_networks 模块?

提前致谢。

【问题讨论】:

    标签: python python-import python-module


    【解决方案1】:

    我们可以在调用其他导入之前使用sys 添加父路径:

    import sys
    
    sys.path.append("..")
    

    然后:

    from neural_networks import neural_networks
    

    另外,您可以在包含.py的目录中添加一个__init__.py文件(空)进行导入。

    【讨论】:

      【解决方案2】:

      @tlentali 已经回答了正确的方法,但是如果你想使用绝对路径而不是相对路径,你可以这样做

      import os,inspect,sys
      current_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
      parent_dir = os.path.dirname(current_dir)
      sys.path.append(parent_dir)
      

      然后直接导入,

      from neural_networks import neural_networks
      

      【讨论】:

      • 谢谢@LakshikaParihar,我很感激,我注意到了!
      猜你喜欢
      • 2013-11-09
      • 2016-12-27
      • 2012-07-08
      • 2020-03-21
      • 2021-09-08
      • 2021-08-15
      • 1970-01-01
      • 2015-07-23
      • 2021-10-23
      相关资源
      最近更新 更多