1

我正在尝试让我的 Python 脚本在我的 Synology 上运行。该应用程序使用Oracle 的 MySQL 框架连接器/Python,我通过python setup.py install在平台独立版本的连接器/Python 上运行安装它。

我已经通过 .msi 安装程序在我的 Windows PC 上安装了连接器/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 刚刚拥有它。
  • 据我通过谷歌搜索,队列库应该被命名Queue,而不是queuePython 2.7。但是连接器/Python 的平台独立版本没有说明它应该在哪个版本上运行。

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

我该如何解决这个问题?

4

2 回答 2

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 驱动程序)将非常好。

于 2014-08-07T06:44:24.067 回答
0

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

于 2014-08-21T11:42:10.350 回答