0

私は、私がどのような方法を試しても、人々は私と同じ状況を抱えているということをここでいくつか質問しました。Python3.5がMySQL Connectorを使用することを拒否しました

MySQLのドキュメントによると、MySQL-connector-python-2.x.x.xはPython 3+で動作するはずです。私はRPMパッケージをダウンロードし、それを私のvirtualenvの中にインストールしました。しかし、ライブラリをインポートすると、 "No module named MySQL"というエラーが出ます。

(virtual)[centos ~]$ rpm -ql mysql-connector-python-2.1.3-1.el6.x86_64.rpm 
package mysql-connector-python-2.1.3-1.el6.x86_64.rpm is not installed 

パッケージをインストールしようとすると::これはのpython2.6に取り組んでいます

(virtual)[centos ~]$ sudo rpm -i ~/Documents/python/mysql-connector-python-2.1.3-1.el6.x86_64.rpm 
[sudo] password for <username>: 
warning: /home/<username>/Documents/python/mysql-connector-python-2.1.3-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY 
    package mysql-connector-python-2.1.3-1.el6.x86_64 is already installed 

[centos ~]$ python 
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import MySQLdb 
>>> import mysql.connector 
>>> 

doesnのを、私はパッケージをインストールしているかどうかを確認するためにチェック

't on Python3.5:

[centos ~]$ python3.5 
Python 3.5.1 (default, Jan 13 2016, 17:43:34) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import mysql.connector 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'mysql' 
>>> 

は、MySQLのドキュメントを介してパッケージを検証:

(virtual)[centos]$ python 
Python 3.5.1 (default, Jan 13 2016, 17:43:34) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 
>>> from distutils.sysconfig import get_python_lib 
>>> print (get_python_lib()) 
/home/<username>/Documents/redhat-server/python_project/virtual/lib/python3.5/site-packages 
>>> 
>>> import mysql.connector 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'mysql' 
>>> 

をpython3.5がMySQL.connector

(virtual)[centos]$ which python3.5 
~/Documents/redhat-server/python_project/virtual/bin/python3.5 

アップデートと同じディレクトリにあることを確認する:

(virtual)[centos]$ pip install mysql-connector-python 
Collecting mysql-connector-python 
    Could not find a version that satisfies the requirement mysql-connector-python (from versions:) 
No matching distribution found for mysql-connector-python 
(virtual)[centos]$ 

私は間違って何をしていますか?

+0

おそらく* rpm *がパッケージをグローバルにインストールしたため、デフォルトのpythonがpython2であるため、python3はそれをインポートすることができません。また、virtualenvにいる間、あなたのpythonインタプリタはあなたのvirtualenvのpythonバイナリ(py2/3のいずれか)を指しています。あなたのvirtualenvの下にパッケージをインストールするために* pip *を試してみてください – Anzel

+0

Python3ベースのスニペットで 'import MySQLdb'をスキップするのはなぜですか? – ray

+0

@ray - Python3 +ではサポートされていないためです。 https:// sourceforge。net/projects/mysql-python/ – dreamzboy

答えて

0

私はそれを理解しました。 Anzelは、デフォルトのpython2.6ディレクトリにグローバルにインストールされているという事実については正解でした。

"python" - > python2.6のデフォルトPythonインタプリタを起動し、以下のコマンドを実行して "MySQL.connector"がインストールされている場所を確認してください。上記のディレクトリに

>>> from distutils.sysconfig import get_python_lib 
>>> print get_python_lib() 
/usr/lib/python2.6/site-packages 
>>> 

移動し、MySQLのディレクトリと呼ばれる、と呼ばれるファイルを明らかにし、 "/usr/lib/python2.6/site-packages/" MySQL_connector_python-2.1.3-py2.6.egg -info。

Python3.5インタプリタを起動すると、私は別のパスに導かれます。私は十分に確認しましたが、2つのMySQLとMySQL_connector_python-2.1.3-py2.6.egg-infoファイル/ディレクトリはありませんでした。

>>> from distutils.sysconfig import get_python_lib 
>>> print (get_python_lib()) 
/home/<username>/Documents/redhat-server/python_project/virtual/lib/python3.5/site-packages 
>>> 

次に、これらの2つのファイルをPython3.5サイトパッケージディレクトリにコピーし、インポート、データベース接続をテストしたところ、正常に機能しました。

Python 3.5.1 (default, Jan 13 2016, 17:43:34) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux 
Type "copyright", "credits" or "license()" for more information. 
>>> 
>>> import mysql.connector 
>>> 
>>> cnx = mysql.connector.connect (user = 'username', password = 'password', host = 'localhost', 
       database = 'testdb') 
>>> cnx 
<mysql.connector.connection.MySQLConnection object at 0x7ffa4c1009b0> 
関連する問題