无法将mysql安装到Django框架的MacOSCatalina上的venv中



Dears,我无法将mysql或mysqlclient安装到我的venv中。每次我尝试,我都会得到以下错误:

但是,我使用以下步骤在本地进行了brew安装:https://ruddra.com/posts/install-mysqlclient-macos/

它在本地工作,但我仍然无法用mysql或mysqlclient创建一个合适的venv。我正在使用Django和PyCharm。每次我想管理.py运行服务器时,它都会向我请求mysqlclient。

尝试pip将mysql安装到我的venv:时出错

Processing /Users/michaltarasiewicz/Library/Caches/pip/wheels/3e/4a/d0/506edab38d1bdf574b02c24805fcf7348a327297fcc285431d/mysql-0.0.2-py3-none-any.whl
Collecting mysqlclient
Using cached mysqlclient-1.4.6.tar.gz (85 kB)
Building wheels for collected packages: mysqlclient
Building wheel for mysqlclient (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /Users/michaltarasiewicz/Projects/Venvs/Django/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/setup.py'"'"'; __file__='"'"'/private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-wheel-8ds4c5v5
cwd: /private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/
Complete output (30 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-10.9-x86_64-3.8
creating build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/_exceptions.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/compat.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
creating build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
running build_ext
building 'MySQLdb._mysql' extension
creating build/temp.macosx-10.9-x86_64-3.8
creating build/temp.macosx-10.9-x86_64-3.8/MySQLdb
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch x86_64 -g -Dversion_info=(1,4,6,'final',0) -D__version__=1.4.6 -I/usr/local/Cellar/mysql/8.0.19/include/mysql -I/Users/michaltarasiewicz/Projects/Venvs/Django/include -I/Library/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c MySQLdb/_mysql.c -o build/temp.macosx-10.9-x86_64-3.8/MySQLdb/_mysql.o
gcc -bundle -undefined dynamic_lookup -arch x86_64 -g build/temp.macosx-10.9-x86_64-3.8/MySQLdb/_mysql.o -L/usr/local/Cellar/mysql/8.0.19/lib -lmysqlclient -lssl -lcrypto -o build/lib.macosx-10.9-x86_64-3.8/MySQLdb/_mysql.cpython-38-darwin.so
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for mysqlclient
Running setup.py clean for mysqlclient
Failed to build mysqlclient
Installing collected packages: mysqlclient, mysql
Running setup.py install for mysqlclient ... error
ERROR: Command errored out with exit status 1:
command: /Users/michaltarasiewicz/Projects/Venvs/Django/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/setup.py'"'"'; __file__='"'"'/private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-record-8j227b7x/install-record.txt --single-version-externally-managed --compile --install-headers /Users/michaltarasiewicz/Projects/Venvs/Django/include/site/python3.8/mysqlclient
cwd: /private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/
Complete output (30 lines):
running install
running build
running build_py
creating build
creating build/lib.macosx-10.9-x86_64-3.8
creating build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/_exceptions.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/compat.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb
creating build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.9-x86_64-3.8/MySQLdb/constants
running build_ext
building 'MySQLdb._mysql' extension
creating build/temp.macosx-10.9-x86_64-3.8
creating build/temp.macosx-10.9-x86_64-3.8/MySQLdb
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch x86_64 -g -Dversion_info=(1,4,6,'final',0) -D__version__=1.4.6 -I/usr/local/Cellar/mysql/8.0.19/include/mysql -I/Users/michaltarasiewicz/Projects/Venvs/Django/include -I/Library/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c MySQLdb/_mysql.c -o build/temp.macosx-10.9-x86_64-3.8/MySQLdb/_mysql.o
gcc -bundle -undefined dynamic_lookup -arch x86_64 -g build/temp.macosx-10.9-x86_64-3.8/MySQLdb/_mysql.o -L/usr/local/Cellar/mysql/8.0.19/lib -lmysqlclient -lssl -lcrypto -o build/lib.macosx-10.9-x86_64-3.8/MySQLdb/_mysql.cpython-38-darwin.so
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /Users/michaltarasiewicz/Projects/Venvs/Django/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/setup.py'"'"'; __file__='"'"'/private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-install-v6y4fnwu/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/v5/rxvfdtj967bcph1hj69s0k8m0000gn/T/pip-record-8j227b7x/install-record.txt --single-version-externally-managed --compile --install-headers /Users/michaltarasiewicz/Projects/Venvs/Django/include/site/python3.8/mysqlclient Check the logs for full command output.

您必须安装依赖项:

error: command 'gcc' failed with exit status 1

您至少需要安装GCC,但请查看项目页面上的完整列表。

在这种情况下,您可以将mysql-connector-c链接回来,然后尝试安装mysqlclient。像这样:

brew unlink mysql
brew link --overwrite mysql-connector-c
pip install mysqlclient
brew unlink mysql-connector-c
brew link --overwrite mysql

或者,如果您在系统中安装了mysqlclient,那么在创建虚拟环境时可以使用--system-site-packages

python3 -m venv venv_name --system-site-packages

更多信息可以在venv文档中找到。

最新更新