如何在python中从父目录导入文件?
我的项目树如下:
从__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"})
答案 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:
在指定要导入的模块时,不必指定 模块的绝对名称。包含模块或包装时 在另一个包中,可以在其中进行相对导入 相同的顶级软件包,而不必提及软件包名称。通过 在您之后使用指定模块或包装中的前导点 可以指定遍历当前包层次结构的高度 不指定确切名称。一个前导点表示当前 进行导入的模块所在的包。两点表示向上 一个包级别。三个点向上两个级别,等等。