相关疑难解决方法(0)

Python中的相对导入3

我想从同一目录中的另一个文件导入一个函数.

有时它适用于我,from .mymodule import myfunction但有时我会得到:

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

有时它适用from mymodule import myfunction,但有时我也得到:

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

我不明白这里的逻辑,我找不到任何解释.这看起来完全随机.

有人可以向我解释这一切背后的逻辑是什么吗?

python python-import python-3.x

589
推荐指数
16
解决办法
38万
查看次数

从Python中的另一个文件调用函数

Set_up:我有一个.py文件,用于我需要在程序中使用的每个函数.

在这个程序中,我需要从外部文件调用该函数.

我试过了:

from file.py import function(a,b)
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

ImportError:没有名为'file.py'的模块; 文件不是包

我该如何解决这个问题?

python import file function

412
推荐指数
14
解决办法
86万
查看次数

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
查看次数

如何解决:尝试在没有已知父包的情况下进行相对导入

我有一个简单的项目结构,其中大部分是空的 python 文件,以便测试在线教程中的概念:

project
   |--package1
   |     |--__init__.py
   |     |--module1.py
   |
   |--package2
   |     |--__init__.py
   |     |--module2.py
   |
   |--__init__.py
Run Code Online (Sandbox Code Playgroud)

模块1.py:

from .package2.module2 import function2
Run Code Online (Sandbox Code Playgroud)

模块2.py:

def function2():
    return 0
Run Code Online (Sandbox Code Playgroud)

直接运行 module1.py 会出现此错误:

Traceback (most recent call last):
  File "c:\"blahblahblah"\project\package1\module1.py", line 1, in <module>
    from .package2.module2 import function2
ImportError: attempted relative import with no known parent package
Run Code Online (Sandbox Code Playgroud)

我尝试通过将 module2.py 放入项目文件夹本身并修改导入来降低问题的复杂性,因为我的教程建议它可以工作(来自 .module2 import function2),但这会产生相同的错误。

旁注:我的印象是 init 文件对于我的 python 版本来说是不必要的,但我添加了它们以覆盖我的所有基础。

Python版本3.9.1

任何提示将不胜感激。

python python-import python-3.x

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

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

我的项目中的导入有问题。

我的目录结构如下:

base_directory
  - examples
  - src
    - folder_1
      - __init__.py
      - file.py
    - folder_2
      - __init__.py
      - class1.py
      - class2.py
      - class3.py
      - class4.py
Run Code Online (Sandbox Code Playgroud)

file.py我尝试:from ..folder2.class1 import Class1然后,我收到错误:

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

folder2/__init__.py我做了我在 Python 中制作包的教程中看到的内容:

from class1 import Class1

my_class_1 = Class1()
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都奏效了。我该怎么办?我使用 Python 3.7.5

谢谢。

python package python-import importerror python-3.x

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

无法从模块导入子模块

我的项目有以下结构

Object_Detection/
                 setup.py
                 setup.cfg
                 requirement.txt
                 object_detection/
                                  models
                                  __init__.py #contains from . import models
                 tests/ 
                       # inside tests dir
                       test_utils_image.py
                       __init__.py #empty
                 utils/
                      # inside utils dir
                      __init__.py #inside 
                      utils_image_preprocess.py
                      utils_image.py
                      utils_tfrecord.py
Run Code Online (Sandbox Code Playgroud)

现在utils 目录中的init .py 包含以下代码。

# inside __init__.py
from . import utils_image_preprocess
from . import utils_image
from . import utils_tfrecord
Run Code Online (Sandbox Code Playgroud)

在init .py 文件之上运行会出现错误:

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

测试目录中的 test_utils.py 包含以下代码

# inside test_utils.py
from object_detection.utils import utils_image
Run Code Online (Sandbox Code Playgroud)

运行 test_utils.py 时出现以下错误

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

python oop package python-3.x

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