如何从python的父目录导入文件?

时间:2018-07-05 11:52:28

标签: python python-3.x

如何在python中从父目录导入文件?

我的项目树如下:

enter image description here

__main__.py中的vehiclesListCrawler文件中,我要导入父目录中的common.py

现在我按如下操作:

from common import get_init_url, create_urls_to_fetch, MILEAGE_RANGES, notify_on_error

但是我遇到一个错误:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "./__main__.py", line 11, in <module>
    from common import get_init_url, create_urls_to_fetch, MILEAGE_RANGES, notify_on_error
ModuleNotFoundError: No module named 'common'

有什么主意吗?

更新

here的所有内容都无济于事。这就是为什么我发布了新问题。

__main__.py内部,我的主要功能如下:

def main(params):
    try:
        process.crawl(AutoscoutListSpider, params)
        process.start()
        return {"Success ": main_result}
    except Exception as e:
        return {"Error ": e, "params ": params}

我按如下方式运行它:

main({"make":"Audi", "model":"A3", "mileage":"2500"})

1 个答案:

答案 0 :(得分:-1)

方式1:绝对导入:

from asCrawlers.common import get_init_url, create_urls_to_fetch, MILEAGE_RANGES, notify_on_error

方式2:相对导入:

from ..common import get_init_url, create_urls_to_fetch, MILEAGE_RANGES, notify_on_error

有关进口的更多信息here

  

在指定要导入的模块时,不必指定   模块的绝对名称。包含模块或包装时   在另一个包中,可以在其中进行相对导入   相同的顶级软件包,而不必提及软件包名称。通过   在您之后使用指定模块或包装中的前导点   可以指定遍历当前包层次结构的高度   不指定确切名称。一个前导点表示当前   进行导入的模块所在的包。两点表示向上   一个包级别。三个点向上两个级别,等等。