无法从 xampp 命令行运行 python 程序

Posted

技术标签:

【中文标题】无法从 xampp 命令行运行 python 程序【英文标题】:Can't run python program from xampp command line 【发布时间】:2020-04-26 20:31:05 【问题描述】:

我在 python 中编写了一个代码来使用 selenium 从网站上抓取一些数据。当我在系统命令行中运行此代码时,它完全可以工作。但是当我从 xampp 命令行运行它时,它会给出错误并显示此消息

Traceback(最近一次调用最后一次):文件 "C:\Users\Marajul\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\service.py", 第 72 行,开始 self.process = subprocess.Popen(cmd, env=self.env, 文件 "C:\Users\Marajul\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", 第 854 行,在 init 中 self._execute_child(args, 可执行文件, preexec_fn, close_fds, 文件 "C:\Users\Marajul\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", 第 1307 行,在 _execute_child 中 hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] 系统找不到文件 指定

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 “C:\xampp\htdocs\Dairy\API\toph\python\a.py”,第 16 行,在 驱动程序 = Chrome(webdriver) 文件“C:\Users\Marajul\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py”, 第 73 行,在 init 中 self.service.start() 文件 "C:\Users\Marajul\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\service.py", 第 81 行,开始 引发 WebDriverException(selenium.common.exceptions.WebDriverException:消息: 'chromedriver3.exe' 可执行文件需要在 PATH 中。请参见 https://sites.google.com/a/chromium.org/chromedriver/home

from selenium.webdriver import Chrome
import pandas as pd
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="",
  database="dairy"
)

mycursor = mydb.cursor()

webdriver = 'chromedriver3.exe'

driver = Chrome(webdriver)
cnt=0

while 1:
    page_nb=(str)(cnt);
    url = "https://toph.co/submissions/filter?author=590d7d60de14194eb555201c&start="+page_nb+"&verdict="
    cnt=cnt+64
    driver.get(url)
    quotes = driver.find_elements_by_class_name("syncer")
    if(len(quotes)==0):
        break
    for quote in quotes:
        row=quote.find_elements_by_tag_name("td")
        link=row[2].find_elements_by_tag_name('a')
        time1=row[3].find_elements_by_class_name('timestamp')
        time=time1[0].get_attribute('data-time')
        urlp=""
        if(link):
            urlp=link[0].get_attribute('href')
        sql1="SELECT * FROM submission WHERE id=%s AND oj='toph'"
        val1 = (row[0].text,)
        mycursor.execute(sql1,val1)
        myresult = mycursor.fetchall()
        if(len(myresult)==0):
            sql="INSERT INTO submission (id,dt,link,name,ver,oj) VALUES (%s,%s,%s,%s,%s,'toph')"
            val=(row[0].text,time,urlp,row[2].text,row[7].text)
            mycursor.execute(sql, val)
            mydb.commit()

print("successfull")
driver.close()

我不是python专家,所以请帮我解决这个问题:)

【问题讨论】:

不要发布文字图片。以纯文本形式发布错误消息 【参考方案1】:

您的问题是常见的“不在路径中”类型的问题,错误消息清楚地表明了这一点:

消息:“chromedriver3.exe”可执行文件需要在 PATH 中。请看https://sites.google.com/a/chromium.org/chromedriver/home

解决方案是使用二进制文件的绝对路径(如果您可以指定)或编辑全局环境 PATH 变量并将该二进制文件的位置添加到其中。

【讨论】:

webdriver = 'C:/xampp/htdocs/Dairy/API/toph/python/chromedriver3.exe' 使用此行代替 webdriver = 'chromedriver3.exe'【参考方案2】:

我遇到了类似的问题,看起来这个错误是 Windows 通用的,在 subprocess.py 中设置 shell=True 后我能够解决它。

【讨论】:

你到底在哪里设置了 shell=True 来完成这项工作?快把我逼疯了!!!

以上是关于无法从 xampp 命令行运行 python 程序的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu - xampp - 无法将数据库导入 mysql

在 Python 中与另一个命令行程序交互

Python 3 不会从 Git Bash 命令行运行 [重复]

无法使用 XAMPP 从 Python cgi 脚本写入 PYTHON_EGG_CACHE

我无法从 android studio 构建或运行我的颤振应用程序,但它可以从命令行运行

无法从命令行运行 UIAutomationTest