我安装
pip install mysqlclient==1.4.6 --no-cache-dir
但是出现错误:
ld: library 'ssl' not found
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1
如何修复它?
我尝试像这样安装它:
brew unlink mariadb
brew install mariadb-connector-c
ln -s /usr/local/opt/mariadb-connector-c/bin/mariadb_config /usr/local/bin/mysql_config
pip install mysqlclient
rm /usr/local/bin/mysql_config
brew unlink mariadb-connector-c
brew link mariadb
但是有一个问题:
ImportError: dlopen(/.../venv/lib/python3.6/site-packages/MySQLdb/_mysql.cpython-36m-darwin.so, 0x0002): symbol not found in flat namespace '_mysql_affected_rows'
UPD:openssl 没有帮助
这个错误信息表明,在链接 MySQLdb 模块时,编译器找不到 SSL 库。这通常是由于 OpenSSL 安装不正确或未被链接到 MySQL 客户端库导致的。
以下是解决此问题的步骤:
1. 确认 OpenSSL 安装:
-
打开终端并输入
openssl version
。 - 如果 OpenSSL 已安装,将看到版本信息。
-
如果未安装,请使用 Homebrew 安装:
brew install openssl
2. 链接 OpenSSL 库 (如果需要):
-
有时,即使 OpenSSL 已安装,也可能需要将其链接到系统库路径。可以使用以下命令执行此操作:
bash ln -s /usr/local/opt/openssl@3/lib/libssl.dylib /usr/local/lib/ ln -s /usr/local/opt/openssl@3/lib/libcrypto.dylib /usr/local/lib/
注意: 请将openssl@3
替换为安装的 OpenSSL 版本。
3. 重新安装 mysqlclient:
- 卸载旧的 mysqlclient:`pip uninstall mysqlclient`
- 重新安装,指定 OpenSSL 路径:
```bash
pip install mysqlclient==1.4.6 --no-cache-dir \
--global-option=build_ext \
--global-option="-I/usr/local/opt/openssl@3/include" \
--global-option="-L/usr/local/opt/openssl@3/lib"
```
**注意:**
- 请将 `openssl@3` 替换为安装的 OpenSSL 版本。
- 确保 `/usr/local/opt/openssl@3/include` 和 `/usr/local/opt/openssl@3/lib` 路径正确。
4. 验证安装:
- 打开 Python 解释器并尝试导入 MySQLdb:
```python
>>> import MySQLdb
```
如果没有错误消息,则表示 mysqlclient 已成功安装。
其他建议:
-
确保的
pip
版本是最新的:pip install --upgrade pip
-
尝试使用
virtualenv
创建一个新的虚拟环境,并在其中安装mysqlclient
。 -
尝试使用
mysql-connector-python
作为替代方案,它不需要编译,并且可能更容易安装。
如果问题仍然存在,请提供以下信息,以便我更好地帮助:
- 使用的 macOS 版本
- 安装的 Python 版本
- 安装的 OpenSSL 版本
- 完整的错误消息和安装日志
希望这些步骤能够帮助解决问题!
标签:python,c++,macos,pip,libmysqlclient From: 78794797