从另一个目录导入文件

时间:2018-09-03 11:41:48

标签: python python-2.7

我有一个文件调用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。请帮助我。

3 个答案:

答案 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

更多信息在这里, https://www.python-course.eu/python3_packages.php

答案 2 :(得分:0)

使用 sys.path.append 附加python文件(模块所在)的目录。例如,如果您的 entryPoint.py 位于 address 目录

import sys
sys.path.append('/path/to/your/module/address/')
import entryPoint