相关疑难解决方法(0)

相对进口数十亿次

我来过这里:

还有很多我没有复制的网址,有些在SO上,有些在其他网站上,当我认为我有快速解决方案的时候.

永远反复出现的问题是:使用Windows 7,32位Python 2.7.3,如何解决这个"非包装中尝试相对导入"的消息?我在pep-0328上构建了一个包的精确副本:

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleX.py
        moduleY.py
    subpackage2/
        __init__.py
        moduleZ.py
    moduleA.py
Run Code Online (Sandbox Code Playgroud)

我确实在适当的模块中创建了名为spam和eggs的函数.当然,它没有用.答案显然在我列出的第4个网址中,但这对我来说都是校友.我访问过的其中一个网址上有此回复:

相对导入使用模块的name属性来确定模块在包层次结构中的位置.如果模块的名称不包含任何包信息(例如,它设置为'main'),则解析相对导入,就像模块是顶级模块一样,无论模块实际位于文件系统的哪个位置.

上面的反应看起来很有希望,但它对我来说都是象形文字.所以我的问题是,如何让Python不回归"尝试非包装中的相对导入"?有一个答案涉及-m,据说.

有人可以告诉我为什么Python会给出错误信息,非包装意味着什么!,为什么以及如何定义"包裹",并且准确的答案足以让幼儿园儿童理解.

编辑:导入是从控制台完成的.

python import relative-path python-2.7

564
推荐指数
8
解决办法
17万
查看次数

从子文件夹导入模块

我想将子文件夹导入为模块.因此每个子文件夹都包含一个__init__.py.我的文件夹结构是这样的:

src\
  main.py
  dirFoo\
    __init__.py
    foofactory.py
    dirFoo1\
      __init__.py
      foo1.py
    dirFoo2\
      __init__.py
      foo2.py
Run Code Online (Sandbox Code Playgroud)

在我的主脚本中我导入

from dirFoo.foofactory import FooFactory
Run Code Online (Sandbox Code Playgroud)

在这个工厂文件中,我包含子模块:

from dirFoo1.foo1 import Foo1
from dirFoo2.foo2 import Foo2
Run Code Online (Sandbox Code Playgroud)

如果我调用我的foofactory我得到错误,那python无法导入子模块foo1和foo2:

Traceback (most recent call last):
  File "/Users/tmp/src/main.py", line 1, in <module>
from dirFoo.foofactory import FooFactory
  File "/Users/tmp/src/dirFoo/foofactory.py", line 1, in    <module>
from dirFoo1.foo1 import Foo1
    ImportError: No module named dirFoo1.foo1
Run Code Online (Sandbox Code Playgroud)

python import module subdirectory

89
推荐指数
4
解决办法
11万
查看次数

尝试相对导入,但没有已知的父程序包

from ..box_utils import decode, nms
Run Code Online (Sandbox Code Playgroud)

该行显示错误

ImportError:尝试相对导入,没有已知的父包

这是什么错误,以及如何解决该错误?

decode nms python-3.x

7
推荐指数
2
解决办法
7294
查看次数

VSCode 1.39.x 和 Python 3.7.x:“ImportError:尝试在没有已知父包的情况下进行相对导入” - 在没有调试的情况下启动时 (CTRL+F5))

  • 使用 CTRL+F5 从 VS Code 运行 Python 测试时,我收到错误消息

    导入错误:尝试在没有已知父包的情况下进行相对导入

错误消息文本:“ImportError:在没有已知父包的情况下尝试相对导入”

  • 使用命令行从 VS Code 终端运行 Python 测试时

    python test_HelloWorld.py

    我收到错误消息

    ValueError:尝试在顶级包中进行相对导入

错误消息:“ValueError:尝试在顶级包之外进行相对导入”

这是项目结构

项目结构

如何以最少的(代码/项目结构)更改工作解决主题问题?

蒂亚!

[更新]

我使用 sys.path 更正得到了以下解决方案:

使用sys.path更正的主题问题解决方案

import sys
from pathlib import Path
sys.path[0] = str(Path(sys.path[0]).parent)
Run Code Online (Sandbox Code Playgroud)

但我想通过使用一些(VS 代码)设置或 Python 运行上下文/环境设置(文件),仍然可以有更有效的解决方案,而无需更正源代码?

python import package python-unittest visual-studio-code

7
推荐指数
2
解决办法
7806
查看次数