我有一个文件调用entryPoint.py
:
from .commonLib.deviceLib import *
我有一个名为deviceLib.py
的文件:
import math
import sys
import logging
import requests
import this
class DeviceLib(object):
def __init__(self, connectionDb):
self.__db = connectionDb
树是这样的:
/test
entryPoint.py
/commonLib
__init__.py
deviceLib.py
执行python entryPoint.py
时出现错误:Attempted relative import in non-package
。请帮助我。
答案 0 :(得分:0)
要从另一个目录导入文件,可以使用以下代码:
import sys
sys.path.insert(0, 'folder destination')
import file
如您所见,我们在其中包含了路径,因此python也会在该路径中查找文件。
答案 1 :(得分:0)
/ test和/ commonLib所在的文件夹中应该有__init__.py
。
然后就做
from commonLib import deviceLib
例如
sound
|-- effects
| |-- echo.py
| |-- __init__.py
| |-- reverse.py
| `-- surround.py
|-- filters
| |-- equalizer.py
| |-- __init__.py
| |-- karaoke.py
| `-- vocoder.py
|-- formats
| |-- aiffread.py
| |-- aiffwrite.py
| |-- auread.py
| |-- auwrite.py
| |-- __init__.py
| |-- wavread.py
| `-- wavwrite.py
`-- __init__.py
让我们假设您现在已经以子目录格式打开了wavread.py,您只需通过
即可从过滤器中导入karaoke.py。from filters import karaoke
答案 2 :(得分:0)
使用 sys.path.append 附加python文件(模块所在)的目录。例如,如果您的 entryPoint.py 位于 address 目录
内import sys
sys.path.append('/path/to/your/module/address/')
import entryPoint