ImportError:没有名为queue的模块

时间:2014-08-07 06:24:42

标签: python python-2.7 mysql-connector-python

我正在尝试让我的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

我在这看到两个问题:

  • 我需要某种队列库。我在哪里可以得到它?我的Windows PC就拥有它。
  • 据我搜索过,对于Python 2.7,队列库应该被命名为Queue而不是queue。但Connector / Python的Platform Independent版本没有说明它应该在哪个版本上运行。

为了澄清,我没有任何版本的队列库(即Queue.pyqueue.py)。

如何解决这个问题?

2 个答案:

答案 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-pythonMySQLdb driver)会很好地运作。

答案 1 :(得分:0)

我从未真正找到解决原始问题的方法,但最终我在PHP开发的JSON API中提取了SQL通信。然后Python脚本使用urllibjson模块来执行HTTP请求并解析数据。