相关疑难解决方法(0)

如何在Python中进行相对导入?

想象一下这个目录结构:

app/
   __init__.py
   sub1/
      __init__.py
      mod1.py
   sub2/
      __init__.py
      mod2.py
Run Code Online (Sandbox Code Playgroud)

我正在编码mod1,我需要从中导入一些东西mod2.我该怎么办?

我尝试了from ..sub2 import mod2但是我得到了"尝试非包装中的相对导入".

我google了一下,但发现只有" sys.path操纵"黑客.有没有干净的方式?


编辑:我__init__.py的所有人目前都是空的

EDIT2:我想这样做,因为SUB2包含了为子包(共享类sub1,subX等等).

Edit3:我正在寻找的行为与PEP 366中描述的相同(感谢John B)

python python-module python-import

508
推荐指数
11
解决办法
31万
查看次数

Yet another ImportError: attempted relative import with no known parent package

I have the following directory structure:

py_test
??? __init__.py
??? dir1
?   ??? __init__.py
?   ??? script1.py
??? dir2
    ??? __init__.py
    ??? script2.py
Run Code Online (Sandbox Code Playgroud)

In script2 I want to "import ..\script1".

What I tried in script2:

  1. Does not work

    from ..dir1 import script1
    ImportError: attempted relative import with no known parent package`
    
    Run Code Online (Sandbox Code Playgroud)
  2. Works

    import sys, os
    path2add = os.path.normpath(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, 'dir1')))
    if (not (path2add in sys.path)) :
        sys.path.append(path2add)
    
    Run Code Online (Sandbox Code Playgroud)

If I want to go with option 1, what is …

python import package python-import

12
推荐指数
1
解决办法
6292
查看次数

从当前工作目录上方的目录导入模块

首先,stackoverflow 上有很多关于此问题的解决方案,但从我尝试过的解决方案来看,它们都不起作用。我正在远程机器(linux)上工作。我dir-2/module_2.py使用 ipython 解释器在文件中进行原型设计。另外,我试图避免使用绝对路径,因为该远程计算机中的绝对路径又长又难看,并且我希望我的代码在下载后在其他计算机上运行。

我的目录结构如下:

/project-dir/
            -/dir-1/
                  -/__ init__.py
                  -/module_1.py
            -/dir-2/
                  -/__ init__.py
                  -/module_2.py
                  -/module_3.py
Run Code Online (Sandbox Code Playgroud)

现在我想module_1从导入module_2。然而,这个 stackoverflow 帖子中提到的解决方案:使用链接

sys.path.append('../..')
import module_2
Run Code Online (Sandbox Code Playgroud)

不起作用。我收到错误:ModuleNotFoundError: No module named 'module_1'

此外,在 ipython 解释器中,会import .module_3抛出module_2错误:

import .module_3
       ^ SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

点运算符不是应该在同一目录中工作吗?总的来说,我对导入机制很困惑。非常感谢对最初问题的任何帮助!多谢!

python import python-import

2
推荐指数
1
解决办法
4130
查看次数

标签 统计

python ×3

python-import ×3

import ×2

package ×1

python-module ×1