簡體   English   中英

無法在 python3 virtualenv 中安裝 mysqlclient

[英]Unable to install mysqlclient in python3 virtualenv

我想用 MySQL 和 Python 3 運行 django。我用virtualenv --no-site-packages -p python3 ./初始化了虛擬環境。 然后我使用 pip 安裝了 django 和 wheel,所以 pip freeze 給出了

django==1.8.3
wheel==0.24.0

然后我嘗試使用pip install mysqlclient ,但它以

Downloading/unpacking mysqlclient
Downloading mysqlclient-1.3.6.tar.gz (78kB): 78kB downloaded
Running setup.py (path:/tmp/pip-build-jpdlrnc8/mysqlclient/setup.py) egg_info for package mysqlclient

Installing collected packages: mysqlclient
Running setup.py install for mysqlclient
building '_mysql' extension
i586-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,6,'final',1) -D__version__=1.3.6 -I/usr/include/mysql -I/usr/include/python3.4m -I/home/ondra/zelvovani/include/python3.4m -c _mysql.c -o build/temp.linux-i686-3.4/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -DTAOCRYPT_DISABLE_X86ASM -g -DNDEBUG
error: command 'i586-linux-gnu-gcc' failed with exit status 1
Complete output from command /home/ondra/zelvovani/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-jpdlrnc8/mysqlclient/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-fa_6nkh3-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ondra/zelvovani/include/site/python3.4:
running install

running build

running build_py

creating build

creating build/lib.linux-i686-3.4

copying _mysql_exceptions.py -> build/lib.linux-i686-3.4

creating build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/__init__.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/compat.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/converters.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/connections.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/cursors.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/release.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/times.py -> build/lib.linux-i686-3.4/MySQLdb

creating build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/__init__.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/CR.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/ER.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/FLAG.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/REFRESH.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/CLIENT.py -> build/lib.linux-i686-3.4/MySQLdb/constants

running build_ext

building '_mysql' extension

creating build/temp.linux-i686-3.4

i586-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,6,'final',1) -D__version__=1.3.6 -I/usr/include/mysql -I/usr/include/python3.4m -I/home/ondra/zelvovani/include/python3.4m -c _mysql.c -o build/temp.linux-i686-3.4/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -DTAOCRYPT_DISABLE_X86ASM -g -DNDEBUG

error: command 'i586-linux-gnu-gcc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /home/ondra/zelvovani/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-jpdlrnc8/mysqlclient/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-fa_6nkh3-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ondra/zelvovani/include/site/python3.4 failed with error code 1 in /tmp/pip-build-jpdlrnc8/mysqlclient
Storing debug log for failure in /home/ondra/.pip/pip.log

我已經安裝了libmysqlclient-devpython3-devzlib1g-dev (在stackoverflow的其他問題中建議的包)。

你有什么想法,我做錯了什么?

使用 pymysql 它應該可以解決您的問題。使用pip3 install pymysql 安裝后,在文件目錄project/project/__init__.py寫這個

import pymysql 
pymysql.install_as_MySQLdb()

注意:- project 是 django 項目的名稱。

您可以按照文檔中的說明嘗試安裝python3-devlibmysqlclient-dev 我遇到了同樣的問題,直到我注意到我需要這些包。

如果您使用的是 python 3.53.6您應該會遇到此問題中描述的問題

引用該庫的一位貢獻者的話:

在 Windows 上構建 MySQL-python 很難。 您應該從源代碼而不是 pip install 構建,因為您需要編輯 setup.cfg 文件。

值得慶幸的是,Christoph Gohlke(加利福尼亞大學歐文分校熒光動力學實驗室)為 Python 擴展包提供了一個非官方的 Windows 二進制文件,您可以在那里下載該庫的輪子 ( .whl ):

根據你的系統和安裝的python版本下載。

然后你只需要做(在下載文件的目錄中):

pip install mysqlclient-....whl

如果您的系統中安裝了多個版本的 python,通常會發生這種情況。 首先,全局卸載mysqlclient和pymysql(如果已安裝):

pip3 uninstall mysqlclient
pip3 uninstall pymysql

現在,轉到您的項目並刪除 venv

sudo rm -r venv

如果使用 pycharm,它會彈出設置解釋器。 選擇 python3.6 作為解釋器並創建一個虛擬環境。 如果不使用pycharm,

python3 -m virtualenv venv
source venv/bin/activate

現在,安裝 mysqlclient,

pip3 install mysqlclient

這應該有效!

根據您的操作系統,從 Christophe Gohlke 的 Windows 預編譯 python 包庫從以下位置下載 mysqlclient 的預編譯 whl 文件。

http://www.lfd.uci.edu/~gohlke/pythonlibs/#vlfd

現在到達下載該文件的目錄並在那里打開命令提示符。

現在運行下面的命令

pip 安裝 xxx.whl

好運 !!

編譯二進制文件時出現問題,有兩種可能的解決方案

  1. 使用來自第三方網站(如lfd )的預編譯二進制文件(僅適用於 Windows)

  2. 通過python dev包安裝編譯所必需的頭文件,就像你要構建擴展一樣,你需要安裝相應的dev包。 使用您的包管理器在系統范圍內安裝它們,不要忘記提及您用於項目的特定 python 版本。 Ubuntu 開始,python 3.6 是默認版本,但我的虛擬環境設置為 python3.7,我必須專門安裝開發包

    apt-get install python3.7-dev

這是我對 stackoverflow 的第一個回答。 我希望它會幫助某人。

請注意以下步驟:

  • 需要 Microsoft Visual C++ 14.0。 此處下載

  • 此處下載 mysqlclient

  • 這是兼容的 mysqlclient 和 python 列表:

    mysqlclient‑1.4.6‑cp39‑cp39‑win_amd64.whl --> python 3.9(64 位) mysqlclient‑1.4.6‑cp39‑cp39‑win32.whl --> python 3.9(32 位)

    mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl --> python 3.8 (64 位) mysqlclient‑1.4.6‑cp38‑cp38‑win32.whl --> python 3.8 (32 位)

    mysqlclient‑1.4.6‑cp37‑cp37m‑win_amd64.whl --> python 3.7 (64 位) mysqlclient‑1.4.6‑cp37‑cp37m‑win32.whl --> python 3.7 (32 位)

    mysqlclient‑1.4.6‑cp36‑cp36m‑win_amd64.whl --> python 3.6 (64 位) mysqlclient‑1.4.6‑cp36‑cp36m‑win32.whl --> python 3.6 (32 位)

  • 根據您的python版本下載mysql

  • 安裝mysql --> pip3 install mysqlclient‑1.4.6.xxxxx.whl

  • 完畢

您可以輕松地在 python3.* 虛擬環境或系統級別安裝mysqlclient ,只需按照以下步驟操作:

首先,安裝:

$ sudo apt-get install gcc libssl-dev

$ sudo apt-get install python3.6-dev libmysqlclient-dev

不要忘記根據您的需要更新 python 版本,對於 python2.7 使用

$ sudo apt-get install python-dev libmysqlclient-dev

現在只需使用以下命令安裝 MySQL 客戶端:

$ pip install mysqlclient

如果您在系統級別安裝相同的,則在命令的開頭添加sudo

注意:無論何時創建 python 虛擬環境,在繼續進行需求安裝之前,請務必更新 pip 和 setuptools:

$ pip install pip setuptools -U

如果您使用的是 Linux:

如安裝mysqlclient的pypi指南中所述,

您可能需要像這樣安裝 Python 3 和 MySQL 開發頭文件和庫

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

注意:(用你的python版本替換python3)例如

sudo apt-get install python3.8-dev default-libmysqlclient-dev build-essential

我在安裝 mysqlclient python 3.9 32 位時遇到問題。 由於官方文檔的建議,我解決了它。 Windows安裝部分

安裝 MariaDB Connector/C 32 位版本后。

pip install mysqlclient

運行沒有錯誤

暫無
暫無

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

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