相关疑难解决方法(0)

超出相对导入中的顶级包错误

看来这里已经有一些关于python 3中相对导入的问题了,但是在经历了很多这些问题后,我仍然找不到我的问题的答案.所以这是问题所在.

我有一个如下所示的包裹

package/
   __init__.py
   A/
      __init__.py
      foo.py
   test_A/
      __init__.py
      test.py
Run Code Online (Sandbox Code Playgroud)

我在test.py中有一行:

from ..A import foo
Run Code Online (Sandbox Code Playgroud)

现在,我在文件夹中package,我跑了

python -m test_A.test
Run Code Online (Sandbox Code Playgroud)

我收到了消息

"ValueError: attempted relative import beyond top-level package"
Run Code Online (Sandbox Code Playgroud)

但如果我在父文件夹中package,例如,我运行:

cd ..
python -m package.test_A.test
Run Code Online (Sandbox Code Playgroud)

一切都好.

现在我的问题是: 当我在文件夹中时package,我在test_A子包中运行模块test_A.test,根据我的理解,..A只上升一个级别,它仍然在package文件夹中,为什么它给出了消息说beyond top-level package.导致此错误消息的原因是什么?

python import package

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

兄弟姐妹包进口

我已经尝试阅读有关兄弟进口甚至 包文档的问题,但我还没有找到答案.

具有以下结构:

??? LICENSE.md
??? README.md
??? api
?   ??? __init__.py
?   ??? api.py
?   ??? api_key.py
??? examples
?   ??? __init__.py
?   ??? example_one.py
?   ??? example_two.py
??? tests
?   ??? __init__.py
?   ??? test_one.py
Run Code Online (Sandbox Code Playgroud)

如何在脚本 examplestests目录从导入 api模块,并可以从命令行运行?

此外,我想避免sys.path.insert每个文件的丑陋黑客.当然这可以在Python中完成,对吧?

python packages siblings python-import

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

尝试相对导入超出顶级包

这是我的文件夹结构:

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