簡體   English   中英

使用 pip3 安裝 mysqlclient 時遇到問題

[英]Troubles installing mysqlclient with pip3

我正在嘗試使用 Django 設置 python 3.6 環境。安裝說明說我應該安裝 mysqlclient 才能連接到 mySQL。我明白了:

dennis@django:~$ sudo -H pip3 install mysqlclient
Collecting mysqlclient
  Using cached mysqlclient-1.3.10.tar.gz
    Complete output from command python setup.py egg_info:
    /bin/sh: 1: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-4jiw3hvk/mysqlclient/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "/tmp/pip-build-4jiw3hvk/mysqlclient/setup_posix.py", line 44, in get_config
        libs = mysql_config("libs_r")
      File "/tmp/pip-build-4jiw3hvk/mysqlclient/setup_posix.py", line 26, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    OSError: mysql_config not found

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-4jiw3hvk/mysqlclient/
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

mySQL 已正確安裝。 mysql_config 文件中應該包含什么? 當我嘗試升級 pip3 時,我得到了這個:

dennis@django:~$ sudo -H pip3 install --upgrade pip3
Collecting pip3
  Could not find a version that satisfies the requirement pip3 (from versions: )
No matching distribution found for pip3
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

使用 pip3 安裝 mysqlclient 后,我注意到該模塊安裝在 python3.5 目錄而不是 python3.6 目錄中,因此當我嘗試導入運行 python3.6 的 MySQLdb 模塊時,找不到它

dennis@django:~/python_db$ python
Python 3.6.0+ (default, Feb  4 2017, 11:11:46) 
[GCC 5.4.1 20161202] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'MySQLdb'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'MySQLdb'
>>> 

然后我使用 python 3.5 重新運行並找到了。 如何使用 pip3 將模塊安裝到 3.6 目錄中?

如果您使用的是Mac OS,請嘗試以下操作:

brew install mysql

如果您使用的是Ubuntu14 / 16,請嘗試以下操作:

sudo apt install libmysqlclient-dev

還有一個:

可以使用sudo pip3 install -U pip更新sudo pip3 install -U pip

LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient

在Debian Stretch中,所需的軟件包名稱似乎已更改為default-libmysqlclient-dev

https://packages.debian.org/stretch/default-libmysqlclient-dev

如果您在OSX上運行MAMP,請執行以下操作:

export PATH=$PATH:/Applications/MAMP/Library/bin

您可以嘗試將mysql安裝到特定的python目錄,例如w / python 3.6

sudo python3.6 /usr/bin/pip3 install mysqlclient

就我而言,通過執行以下操作解決了該問題:

sudo aptitude install libmysqlclient-dev

當我使用Python 3.x時,還需要執行以下操作:

sudo aptitude install python3-dev

查看這個老問題(同時尋找其他問題),我發現問題可能是包含mysql_config的目錄不在當前 $PATH 中。 顯然這就是安裝腳本用來嘗試找到它的內容。 有可能“安裝 mysql”,但不在 $PATH 上——或者 $PATH 指向錯誤的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM