社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python 3模块从另一个文件夹导入错误[重复]

Jamshy • 4 年前 • 712 次点击  

文件夹结构:

  main
   |__ sub1
      |__ __init__.py
   |__ sub2
      |__ test.py

我需要在里面输入 test.py :

from .. sub1 import SomeClass

显示此错误:

值错误:试图在顶级包之外进行相对导入。

谢谢你的回复。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40539
 
712 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Solomon Ucko
Reply   •   1 楼
Solomon Ucko    5 年前

既不 main 也不 sub2 是一个包,因为两者都不包含 __init__.py . 见 the relevant Python docs 更多信息。

Serge Ballesta
Reply   •   2 楼
Serge Ballesta    5 年前

这是从主源文件夹外部进行测试的特殊用例。 main 没有理由成为一个包裹,有没有理由不把它做成一个。

imho,最好的方法是从主目录启动测试。因为当前目录总是在 sys.path , sub1 将直接导入,这就足够了:

from sub1 import SomeClass

但是,根据您的开发环境,您可能需要直接从测试目录或除main以外的任何目录启动测试。在这种情况下,我不确定它是否真的是一个最佳实践,我只将其用于我的测试,但一个简单的技巧是将测试文件夹的父文件夹添加到 搜索路径 .

这可能是 test.py :

import os.path
import sys

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from sub1 import SomeClass
...

照它的样子来:A 搜索路径 只允许从测试文件夹访问主源文件夹的技巧。