我正在尝试让我的Python脚本在我的Synology上运行。该应用程序使用Oracle's MySQL framework Connector/Python通过在Connector / Python的Platform独立版本上运行python setup.py install
来安装。
我已经通过.msi安装程序在我的Windows PC上安装了Connector / Python。这完全没问题。但每次我尝试在我的Synology上运行它时都会收到此错误:
File "MyApplication.py", line 3, in <module>
from DatabaseConnection import DatabaseConnection
File "/volume1/public/Python/MyApplication/DatabaseConnection.py", line 3, in <module>
import mysql.connector
File "/usr/local/lib/python2.7/site-packages/mysql/connector/__init__.py", line 42, in <module>
from mysql.connector.pooling import (
File "/usr/local/lib/python2.7/site-packages/mysql/connector/pooling.py", line 29, in <module>
import queue
ImportError: No module named queue
我在这看到两个问题:
Queue
而不是queue
。但Connector / Python的Platform Independent版本没有说明它应该在哪个版本上运行。为了澄清,我没有任何版本的队列库(即Queue.py
或queue.py
)。
如何解决这个问题?
答案 0 :(得分:3)
您下载的应用程序是为Python 3设计的,并且您已安装了Python 2.
独立于平台的zip存档包含连接器的Python 2和Python 3版本,并且metasetupinfo.py
中有此检查:
if sys.version_info >= (3, 1):
sys.path = ['python3/'] + sys.path
package_dir = { '': 'python3' }
elif sys.version_info >= (2, 6) and sys.version_info < (3, 0):
sys.path = ['python2/'] + sys.path
package_dir = { '': 'python2' }
else:
raise RuntimeError(
"Python v%d.%d is not supported" % sys.version_info[0:2])
由于某些原因,您的平台上的此检查默认为Python 3,因此安装了不正确的库版本。
Oracle MySQL连接器有一些独特的功能(例如,它为django提供了优化的驱动程序),但如果您不需要这些功能 - 安装mysql-python
(MySQLdb driver)会很好地运作。
答案 1 :(得分:0)
我从未真正找到解决原始问题的方法,但最终我在PHP开发的JSON API中提取了SQL通信。然后Python脚本使用urllib
和json
模块来执行HTTP请求并解析数据。