【发布时间】:2019-11-15 21:12:16
【问题描述】:
我正在尝试使用 raspbian 在 raspberrypi0 上从 Linux bash 脚本运行 python 脚本。
当我单独运行 python 脚本时,它运行良好。当我通过 bash 脚本运行脚本时,出现以下错误:
Traceback (most recent call list):
File "sendUpdateQuery.py", line 3, in <module>
import mysql.connector
ImportError: No module named mysql.connector
当我像这样单独运行 python 脚本时:./sendUpdateQuery.py 它会按预期运行和工作。但是,一旦我尝试从以下 bash 脚本运行相同的 python 脚本,就会收到上述错误。
testSS.sh
#! /bin/bash
sudo python sendUpdateQuery.py "INSERT INTO <tablename> (col1, col2, col3) VALUES (v1, v2, v3);"
sendUpdateQuery.py:
#! /usr/bin/env python3
import mysql.connector
import smtplib
import sys
def main():
# import mysql.connector
cnx = mysql.connector.connect(user='user', password='<password>', host='<ip-address>', database='<database>
try:
cursor = cnx.cursor()
cursor.execute(sys.argv[1])
finally:
cnx.commit()
cnx.close()
if __name__ == "__main__":
main()
我确保两个文件都可以使用sudo chmod +x sendUpdateQuery.py 和sudo chmod +x testSS.sh 执行。
我尝试在程序的 main 函数中导入 mysql.connector。但我得到了同样的错误。只是在不同的线路上。
我知道我已经安装了 mysql.connector。我安装了以下两个模块:
pip3 install mysql-connector
sudo apt-get install python3-mysql.connector
还是没有骰子。
【问题讨论】:
-
可能您正在执行脚本的 python 与您安装
mysql-connector的 python 不同。请指定python的完整路径。首先通过运行python和导入模块手动检查。 -
您的计算机中可能有 2 个版本的 python。 Python2 没有 mysql 模块,python3 有 mysql 模块。也看看这个问题:stackoverflow.com/questions/2429511/… 并记住如果你写在一个地方
python,第二个地方python3,它们可能是2个不同的python解释器 -
如果 grep 在您的系统上可用,请尝试运行
sudo python -m pip list | grep mysql并查看包是否存在。这很可能是您的操作系统上安装了两个 python 版本并且您使用错误的版本执行脚本的问题。
标签: python mysql linux bash mysql-connector