1

Python スクリプトを Synology で実行しようとしています。このアプリケーションは、プラットフォームに依存しないバージョンの Connector/Python を実行してインストールしたOracle の MySQL フレームワーク Connector/Pythonを使用します。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

これには2つの問題があります。

  • ある種のキュー ライブラリが必要です。どこで入手できますか?私のWindows PCにはちょうどそれがありました。
  • 私がグーグルで調べた限り、キューライブラリはPython 2.7用Queueではなく、名前が付けられているはずです。queueしかし、Connector/Python のプラットフォームに依存しないバージョンは、どのバージョンで実行されるかを示していません。

明確にするために、私はキュー ライブラリのどのバージョンも持っていません (つまりQueue.py、 またはqueue.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-python( MySQLdb ドライバー) で問題なく動作します。

于 2014-08-07T06:44:24.067 に答える
0

元の問題の解決策を実際に見つけることはできませんでしたが、PHP で開発された JSON API で SQL 通信を抽出することになりました。次に、Python スクリプトはurllibおよびjsonモジュールを使用して HTTP 要求を実行し、データを解析します。

于 2014-08-21T11:42:10.350 に答える