【问题标题】:ImportError: sys.meta_path is None, Python is likely shutting downImportError: sys.meta_path 为 None,Python 可能正在关闭
【发布时间】:2017-05-19 16:59:23
【问题描述】:

这里是新手。请解释为什么会出现此问题以及如何解决。

错误:

"C:\Program Files (x86)\Python36-32\python.exe" C:/Users/Vivek-Pc/PycharmProjects/tryOutSeries/searchTryout2.py 异常被忽略:> 回溯(最近一次通话最后): del 中的文件“C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\common\service.py”,第 173 行 文件“C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\common\service.py”,第 149 行,停止 文件“C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\common\service.py”,第 120 行,在 send_remote_shutdown_command ImportError: sys.meta_path 为 None,Python 可能正在关闭 进程以退出代码 0 结束

使用的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver_path = "c:\Program Files (x86)\Python36-32\Lib\site-packages\selenium\webdriver\chrome\chromedriver"
b_obj = webdriver.Chrome(driver_path)
b_obj.implicitly_wait(15)
b_obj.maximize_window()
b_obj.get('http://*.com/')

search_box = b_obj.find_element_by_name('q')
search_box.clear()
search_box.send_keys("Selenium")
search_box.submit()
b_obj.close()

环境信息:

Windows、Selenium、Python、Chrome (chromedriver.exe) 和 PyCharm

【问题讨论】:

    标签: python-3.x selenium selenium-webdriver pycharm selenium-chromedriver


    【解决方案1】:

    我已经使用 Python 3.6、Selenium 3.0.2 和 ChromeDriver 2.27 重现了同样的错误(此时一切都是最新的)。

    当 Python selenium webdriver 在您显式关闭驱动程序或脚本执行简单结束时(并且将执行 __del__ 方法)尝试 stop the chromedriver service 时,似乎会发生此问题。

    将问题报告给 Python/Selenium github 问题跟踪器:

    解决方法:

    我发现使用driver.quit() 而不是driver.close() 有助于解决问题。

    【讨论】:

    • 只是为了让您知道。即使不使用 driver.quit() 或 driver.close(),也会出现相同的错误。 "C:\Program Files (x86)\Python36-32\python.exe" D:/iqz/my-works/automation-practice/practice/selenium-tryout/firefoxSearch.py​​ ImportError: sys.meta_path 为 None , ................Python 可能正在关闭 Process finished with exit code 0
    • 使用的代码:from selenium import webdriver path1 = 'C:\Program Files (x86)\Python36-32\Lib\site-packages\selenium\webdriver\edge\MicrosoftWebDriver.exe' browser = webdriver .Edge(path1) browser.get("google.com/")
    【解决方案2】:

    你也可以在 python 退出之前给 quit 方法完成执行的时间。 这对我有用:

    #right before quitting
    driver.quit()
    time.sleep(1)
    

    【讨论】:

      【解决方案3】:

      我在处理 CLI 自动化项目时遇到了同样的问题。

      要摆脱这种情况,您必须关闭打开的对象,例如:

      1. 如果在 Paramiko 上工作,必须关闭打开的处理程序 client.close() shell.close()
      2. 如果处理文件操作,那么 file_handler.close()
      3. 如果在套接字上工作,那么我们将关闭在其上创建的对象。

      【讨论】:

      • Paramiko 对我来说是个问题。不得不手动关闭连接。谢谢。