标签: relative-import

相对导入 - ModuleNotFoundError:没有名为x的模块

这是我第一次真正坐下来尝试python 3,似乎失败了.我有以下两个文件:

  1. test.py
  2. config.py

config.py中定义了一些函数以及一些变量.我把它剥离到以下内容:

在此输入图像描述

但是,我收到以下错误:

ModuleNotFoundError: No module named 'config'
Run Code Online (Sandbox Code Playgroud)

我知道py3约定是使用绝对导入:

from . import config
Run Code Online (Sandbox Code Playgroud)

但是,这会导致以下错误:

ImportError: cannot import name 'config'
Run Code Online (Sandbox Code Playgroud)

所以我不知道该怎么做......非常感谢任何帮助.:)

python package python-import python-3.x relative-import

117
推荐指数
12
解决办法
30万
查看次数

使用python3从jupyter笔记本中相对导入的另一个目录中的模块导入本地函数

我有一个类似于以下的目录结构

meta_project
    project1
        __init__.py
        lib
            module.py
            __init__.py
    notebook_folder
        notebook.jpynb
Run Code Online (Sandbox Code Playgroud)

notebook.jpynb我尝试使用相对导入来访问函数function()module.py使用:

from ..project1.lib.module import function
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

SystemError                               Traceback (most recent call last)
<ipython-input-7-6393744d93ab> in <module>()
----> 1 from ..project1.lib.module import function

SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个使用相对导入工作?

请注意,笔记本服务器在meta_project目录级别实例化,因此它应该可以访问这些文件中的信息.

另请注意,至少与最初的预期project1并未被视为模块,因此没有__init__.py文件,它只是作为文件系统目录.如果问题的解决方案需要将其视为一个模块并包含一个__init__.py文件(即使是空白文件),那么这样做是不错的,但这样做不足以解决问题.

我在机器和相对导入之间共享这个目录允许我在任何地方使用相同的代码,并且我经常使用笔记本进行快速原型设计,因此涉及黑客攻击绝对路径的建议不太可能有用.


编辑:这与Python 3中的相对导入不同,Python 3通常讨论Python 3中的相对导入,特别是从包目录中运行脚本.这与在jupyter笔记本中工作有关,该笔记本试图在另一个具有不同的一般和特定方面的目录中的本地模块中调用函数.

python relative-import jupyter-notebook

86
推荐指数
7
解决办法
6万
查看次数

Python相对导入脚本有两个级别

在过去的一小时里,我一直在为我的包裹中的进口做斗争.

我有一个像这样的目录结构:

main_package
 |
 | __init__.py
 | folder_1
 |  | __init__.py
 |  | folder_2
 |  |  | __init__.py
 |  |  | script_a.py
 |  |  | script_b.py
 |
 | folder_3
 |  | __init__.py
 |  | script_c.py
Run Code Online (Sandbox Code Playgroud)

我想访问代码script_b.py以及script_c.py来自的代码script_a.py.我怎样才能做到这一点?

如果我把一个简单的import script_b内部script_a.py,当我跑

from main_package.folder_1.folder_2 import script_b
Run Code Online (Sandbox Code Playgroud)

我遇到了一个

ImportError: no module named "script_b"
Run Code Online (Sandbox Code Playgroud)

为了访问script_c.py,我不知道.我无法找到有关访问两级文件的任何信息,但我知道我可以导入一级文件

from .. import some_module
Run Code Online (Sandbox Code Playgroud)

如何从中访问这两个文件script_a.py

python directory-structure python-import python-3.x relative-import

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

尝试相对导入超出顶级包

这是我的文件夹结构:

Mopy/ # no init.py !
   bash/
     __init__.py
     bash.py # <--- Edit: yep there is such a module too
     bass.py
     bosh/
       __init__.py # contains from .. import bass
       bsa_files.py
     ...
   test_bash\
     __init__.py # code below
     test_bosh\
       __init__.py
       test_bsa_files.py
Run Code Online (Sandbox Code Playgroud)

test_bash\__init__.py我有:

import sys
from os.path import dirname, abspath, join, sep
mopy = dirname(dirname(abspath(__file__)))
assert mopy.split(sep)[-1].lower() == 'mopy'
sys.path.append(mopy)
print 'Mopy folder appended to path: ', mopy
Run Code Online (Sandbox Code Playgroud)

test_bsa_files.py:

import unittest
from unittest import TestCase

import bosh

class TestBSAHeader(TestCase):
    def …
Run Code Online (Sandbox Code Playgroud)

python python-import python-2.7 relative-import python-unittest

22
推荐指数
1
解决办法
4万
查看次数

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

所以,我的文件/文件夹结构如下:

\n
project/\n\xe2\x94\x9c\xe2\x94\x80 utils/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 module.py\n\xe2\x94\x9c\xe2\x94\x80 server/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 main.py\n
Run Code Online (Sandbox Code Playgroud)\n

在里面project/server/main.py我尝试project/utils/module.py使用以下语法导入:from ..utils.module import my_function

\n

我正在使用 VSCode,当我输入模块路径时,它甚至会自动完成。但是当我运行该文件时project/server/main.py,我在标题中收到错误。

\n

我已经在堆栈溢出上阅读了有关此主题的数十个答案,但没有一个使用这样的示例。

\n

python relative-import

21
推荐指数
1
解决办法
5万
查看次数

py2exe的相对导入错误

我试图为简单的Python脚本生成可执行文件.我的setup.py代码如下所示:

from distutils.core import setup
import py2exe
setup(console=["script.py"])
Run Code Online (Sandbox Code Playgroud)

但是,我收到屏幕截图中显示的错误.有什么我可以尝试解决这个问题吗?我使用的是Windows 10.

在此输入图像描述

python py2exe relative-import

14
推荐指数
1
解决办法
1815
查看次数

如何修复相对导入错误:“没有已知的父包”?

我已经尝试了几天来解决项目中的相对导入错误,但没有成功。我有以下项目树:

proj
|
|---__init__.py
|
|---lib
|    |---__init__.py
|    |---func.py
|
|---src
|    |---main.py
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到此错误:

ImportError: attempted relative import with no known parent package
Run Code Online (Sandbox Code Playgroud)

有人遇到同样的问题吗?

python python-3.x relative-import

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

Pycharm汽车相对进口

无论何时使用PyCharm提供的autoimport,它都会生成绝对路径导入.即

from my_package.my_subpackage import my_thing
Run Code Online (Sandbox Code Playgroud)

代替

from .my_subpackage import my_thing
Run Code Online (Sandbox Code Playgroud)

导入python包时是否有使用相对导入而不是绝对导入的设置?

python python-import pycharm relative-import

13
推荐指数
2
解决办法
2302
查看次数

Jupyter Notebook 中的 Python 相对导入

假设我有以下结构:

\n\n
 dir_1\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 functions.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dir_2\n     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 code.ipynb\n
Run Code Online (Sandbox Code Playgroud)\n\n

在,,code.ipynb我只是想访问里面的一个函数functions.py并尝试了这个:

\n\n
from ..functions import some_function\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到错误:

\n\n
attempted relative import with no known parent package\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经检查了一堆类似的帖子,但还没有弄清楚这一点...我正在从 a 运行 jupyter 笔记本,conda env我的 python 版本是3.7.6.

\n

python relative-import anaconda jupyter-notebook

13
推荐指数
2
解决办法
7741
查看次数

Python从并行目录导入模块

我如何组织我的python导入,以便我可以拥有这样的目录.

project
|      \
|      __init__.py
|     
src
|   \
|    __init__.py
|    classes.py
|
test
    \
     __init__.py
     tests.py
Run Code Online (Sandbox Code Playgroud)

然后在/project/test/tests.py中可以导入classes.py

我在tests.py中看到了这样的代码

from .. src.classes import(
    scheduler
    db
)
Run Code Online (Sandbox Code Playgroud)

而且我得到了错误

SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

谁知道该怎么办?

python import module parent relative-import

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