MYSQLConnection调用@database.Setter错误地路由到_mysql_connector c扩展.



在Mac Big Sur 11.6.2上运行使用Python 3.8Mysql 8.0.29 Homebrew

MYSQLConnection调用@database。Setter,即db_conn。database = my_db_name错误地路由到_mysql_connector c扩展,但我没有安装c扩展,因此调用引发异常。pip安装mysql-connector-python后,WHEEL文件中包含Root-Is-Purelibe: true, top_level.txt中缺少_mysql_connector。我期望调用db_conn。database = my_db_name在connection.py中执行MySQLConnection类的数据库(值)方法,而不是将调用路由到不存在的_mysql_connector。尽管在stackoverflow中尝试了各种建议,但我无法让pip安装带有c扩展的mysql-connector-python。

对不起,我还没有声誉在评论中回复Nuno-Mariz,所以发布以下内容。

我和@needpythonhelp在同一个团队工作,我们有几乎相同的macbook pro笔记本电脑,它们不是M1。我们使用相同的Pipfile来创建一个特定于项目的.venv。他没有得到_mysql_connector,而我的。venv得到了(我不记得一年前我是如何得到python 3.8版本的)。请看下面的区别。当他的Python版本被安装时,他缺少_mysql_connector是否与丢失的CPPFLAGS或LDFLAGS有关(大概是从源代码构建的,例如pyenv或annaconda)?

我的系统

clang --version
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
$ python3
Python 3.8.5 (v3.8.5:580fbb018f, Jul 20 2020, 12:11:27)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
cat .venv/lib/python3.8/site-packages/mysql_connector_python-8.0.23.dist-info/WHEEL
Wheel-Version: 1.0
Generator: bdist_wheel (0.35.1)
Root-Is-Purelib: false
Tag: cp38-cp38-macosx_10_14_x86_64
cat .venv/lib/python3.8/site-packages/mysql_connector_python-8.0.23.dist-info/top_level.txt
_mysql_connector
_mysqlxpb
mysql
mysqlx
ls -la .venv/lib/python3.8/site-packages/_mysql*
-rwxr-xr-x  1 brian  staff  7876288 May 25 18:53 .venv/lib/python3.8/site-packages/_mysql_connector.cpython-38-darwin.so
-rwxr-xr-x  1 brian  staff  3190548 May 25 18:53 .venv/lib/python3.8/site-packages/_mysqlxpb.cpython-38-darwin.so

needpythonhelp系统

$ clang --version
Apple clang version 11.0.3 (clang-1103.0.32.62)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
$ python3
Python 3.8.3 (default, Jul 2 2020, 11:26:31)
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin

他的WHEEL文件有

Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any

top_level.txt

mysql
mysqlx

.venv/lib/python3.8/site-packages中没有这些

_mysqlxpb.cpython-38-darwin.so
_mysql_connector.cpython-38-darwin.so

编辑/更新以上信息

我今天晚些时候做了一个测试,我使用pyenv安装最新的CPython 3.8.13,并从上面提到的相同的Pipfile构建了一个新的。venv。这个。venv类似于@needpythonhelp的。venv。所以现在我有一个。venv (CPython 3.8.13)没有_mysql_connector和Root-Is-Purelib: false等,而另一个。venv(来自我一年前安装的原始CPython 3.8.5)确实有它。

这是我今天安装的Pyenv的样子:

❯ pyenv install 3.8:latest
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.13.tar.xz...
-> https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tar.xz
Installing Python-3.8.13...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.8.13 to /Users/brian/.pyenv/versions/3.8.13

当我使用pyenv安装新的Python版本时,关于如何始终如一地获得c-ext的任何想法?

最新更新