【问题标题】:PHP cannot connect to mysql through pythonPHP无法通过python连接mysql
【发布时间】:2018-12-30 11:18:41
【问题描述】:

我正在编写一个 PHP 来执行一个像这样连接到 mysql 的 python 脚本

<?php
    echo shell_exec('python doSmt.py 2>&1');
</body></html>")
?>

在 Python 脚本中:

# -*- coding: utf-8 -*-
import mysql.connector

得到这个错误

Traceback(最近一次调用最后一次):文件“doSmt.py”,第 2 行,在导入中 mysql.connector ImportError: 没有名为 mysql.connector 的模块

请帮忙

更新: 我尝试从 netbeans 检查安装在 php Web 服务器上的软件包

# -*- coding: utf-8 -*-
import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print(installed_packages_list)

得到了这个

'altgraph==0.10.2', 'backports-abc==0.5', 'bdist-mpkg==0.5.0', 'bonjour-py==0.3', 'certifi==2018.4.16', 'chardet==3.0.4', 'click==6.7', 'flask==1.0.2', 'futures==3.2.0', 'idna==2.7', 'itsdangerous==0.24', 'jinja2==2.10', 'macholib==1.5.1', 'markupsafe==1.0', 'matplotlib==1.3.1', 'modulegraph==0.10.4', '鼻子==1.3.7','numpy==1.8.0rc1','pip==10.0.1','py2app==0.7.3', 'pyobjc-core==2.5.1',​​ 'pyobjc-framework-accounts==2.5.1', 'pyobjc-framework-addressbook==2.5.1', 'pyobjc-framework-applescriptkit==2.5.1', 'pyobjc-framework-applescriptobjc==2.5.1', 'pyobjc-framework-automator==2.5.1', 'pyobjc-framework-cfnetwork==2.5.1',​​ 'pyobjc-framework-cocoa==2.5.1', 'pyobjc-framework-collaboration==2.5.1', 'pyobjc-framework-coredata==2.5.1', 'pyobjc-framework-corelocation==2.5.1', 'pyobjc-framework-coretext==2.5.1', 'pyobjc-framework-dictionaryservices==2.5.1', 'pyobjc-framework-eventkit==2.5.1', 'pyobjc-framework-exceptionhandling==2.5.1', 'pyobjc-framework-fsevents==2.5.1', 'pyobjc-framework-inputmethodkit==2.5.1', 'pyobjc-framework-installerplugins==2.5.1', 'pyobjc-framework-instantmessage==2.5.1', 'pyobjc-framework-latentsemanticmapping==2.5.1', 'pyobjc-framework-launchservices==2.5.1', 'pyobjc-framework-message==2.5.1', 'pyobjc-framework-opendirectory==2.5.1', 'pyobjc-framework-preferencepanes==2.5.1', 'pyobjc-framework-pubsub==2.5.1',​​ 'pyobjc-framework-qtkit==2.5.1', 'pyobjc-framework-quartz==2.5.1', 'pyobjc-framework-screensaver==2.5.1', 'pyobjc-framework-scriptingbridge==2.5.1', 'pyobjc-framework-searchkit==2.5.1', 'pyobjc-framework-servicemanagement==2.5.1', 'pyobjc-framework-social==2.5.1', 'pyobjc-framework-syncservices==2.5.1', 'pyobjc-framework-systemconfiguration==2.5.1', 'pyobjc-framework-webkit==2.5.1',​​ 'pyopenssl==0.13.1', 'pyparsing==2.0.1', 'python-dateutil==1.5', 'python==2.7.10', 'pytz==2013.7', 'requests==2.19.1', 'scipy==0.13.0b1', 'setuptools==18.5', 'singledispatch==3.4.0.3', '六==1.4.1', 'tornado==5.0.2', 'urllib3==1.23', 'werkzeug==0.14.1', 'wheel==0.31.1', 'wsgiref==0.1.2', 'xattr==0.6.4', 'zope.interface==4.1.1'

没有与mysql相关的包。我认为这是问题所在。但是如何解决这个问题?

【问题讨论】:

  • 为什么不用PHP直接连接mysql?
  • 回溯很清楚 - 找不到模块。你确定它已经安装了吗?
  • @qirel 我在 netbeans 服务器的 php web build 上编写和运行这些。当我从终端单独运行 python 文件时,它可以工作。我认为问题来自 netbeans 的服务器,但无法弄清楚
  • @Sanu_012 我需要python文件从数据库中读取并处理计算机中的东西

标签: php python mysql webserver


【解决方案1】:

确保您在 doSmt.py 文件的第一行中有以下文本:

#!/usr/bin/env python

【讨论】:

  • 如果脚本按照 OP 的方式执行,即脚本名称作为参数传递给 Python 可执行文件,那么这个 shebang 根本不会做任何事情
【解决方案2】:

好像你还没有安装mysql.connector。尝试使用 pip 安装它。

【讨论】:

  • 我很确定它已经安装了[要求已经满足:mysql-connector in /usr/local/lib/python2.7/site-packages (2.1.6)]
猜你喜欢
  • 1970-01-01
  • 2010-12-24
  • 2020-03-28
  • 2012-12-29
  • 1970-01-01
  • 2015-11-24
  • 2013-04-15
  • 1970-01-01
  • 2017-11-16
相关资源
最近更新 更多