如何在Python 3中使用绝对导入来导入位于其父目录中的包?

你的

我有一个像这样的python软件包目录:

proj/
  mod_a/
    __init__.py
    x.py
    submod_x/
      __init__.py
      y.py
  mod_b/
    __init__.py
    z.py

使用x.py:

import submod_x.y

z.py:

import sys, os.path
sys.path.append(os.path.abspath('../'))

import mod_a.x

现在,当我运行时:

$ python2 z.py

我完成了在y.py中编码的工作

但是当我跑步时:

$ python3 z.py

我有一个例外:

Traceback (most recent call last):
File "z.py", line 4, in <module>
  import mod_a.x
File ".../proj/mod_a/x.py", line 1, in <module>
  import submod_x.y
ImportError: No module named 'submod_x'

我想知道导入包时Python 2和Python 3之间有什么区别,以及如何使用Python 3中的绝对导入功能导入位于其父目录中的包?

用户

我认为您应该在x.py中执行此操作:

import mod_a.submod_x.y

从文件位置的绝对导入是使用绝对模块名称完成的,或像这样:

from . import submod_x.y

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python 3从Jupyter Notebook中相对导入的另一个目录中的模块导入本地函数

如何导入位于pycharm项目中相同子目录中的python文件

如何在VS代码的node.js应用程序中使用python包时导入python包

如何在Python中导入变量包,例如在PHP中使用变量变量($$)?

如何从子包中绝对导入?

如何在python中中断导入行?

如何为其他目录/包中的语法文件导入(或使用tokenVocab)?

如何在python3中导入mysqlclient

从包中的脚本进行Python 3绝对导入的问题

如何在python 3.6中使用绝对导入和相对导入?

如何在Python 3中执行动态相对导入?

在Ubuntu上的Python 3中使用Pip和导入包

在函数调用中使用Python 3+导入包?

如何在绝对导入中设置不带点号的Pypi软件包-Python3

如何在带有if __name __ ='__ main__'块的Python3中使用相对导入?

如何从python3中的同级目录导入?

如何在python3中使用ctypes导入ostringstream?

如何在Flutter中导入目录/包

在使用ParcelJS构建的Cypress测试中,如何在绝对路径中使用导入?

如何在Julia中使用包而不导入?

Python:当位于不同目录中时,如何选择多个脚本之一作为包导入到主脚本中?

如何在python脚本中使用upsertField或upsert参数将mongo集合中的json数据导入

如何在Xcode 12 beta 3中使用Swift成功导入AVFoundation?

如何在python中设置相对导入?

目录中的Python导入

如何在Python中使“从目录导入外部目录”起作用?

如何在Excel公式中使用导入的CSV中的值?

如何在导入中使用根包?

如何在Python中导入包含`-`的目录?