关于python:valueerror:尝试在非包中进行相对导入

ValueError: Attempted relative import in non-package

本问题已经有最佳答案,请猛点这里访问。

我有两个python文件,一个存储在/Python/plata.py位置,另一个存储在/Python/tao/mock.py位置。这就是我的plata.py文件的样子:

1
2
def printSomething():
    print 'This is a test.'

我正在尝试在我的mock.py文件中导入printSomething()函数,如下所示:

1
2
3
from . import plata

plata.printSomething()

但是,这是我遇到的错误:

1
2
3
4
Traceback (most recent call last):
File"/home/manas/Python/tao/mock.py", line 1, in <module>
from . import plata
ValueError: Attempted relative import in non-package

我还把__init__.py文件放在/Python/__init__.py/Python/tao/__init__.py的位置。但是,我仍然遇到同样的错误。

这里怎么了?


由于明显的安全原因,该包的父目录未包含在sys.path中。但是,无论如何…

1
2
3
4
import sys
sys.path.append('..')

import plata

希望这对你有帮助!


看看python模块和python包有什么区别?有关模块与包的说明。简而言之,您的Python目录不是一个包。plata.py是一个独立的模块,应该作为import plata导入。