简体   繁体   English

无法在 Apple Silicon 上导入 pyodbc - 找不到符号:_SQLAllocHandle

[英]Unable to import pyodbc on Apple Silicon - Symbol not found: _SQLAllocHandle

I am currently working on a python (3.8) project on my 2021 MacBook Pro with Apple Silicon.我目前正在使用 Apple Silicon 在我的 2021 MacBook Pro 上进行一个 python (3.8) 项目。 Ultimately, the goal is to build a ML model on data I read from an Azure SQL DB using Apple's Tensorflow fork.最终,目标是在我使用 Apple 的 Tensorflow fork 从 Azure SQL DB 读取的数据上构建一个 ML model。 Therefore, I am developing the project on native Apple Silicon packages - not using Rosetta.因此,我在原生 Apple Silicon 包上开发项目 - 而不是使用 Rosetta。

The Problem arises when I try to import the pyodbc package (4.0.30) in order to connect to my DB.当我尝试导入 pyodbc package (4.0.30) 以连接到我的数据库时,问题就出现了。 I keep getting the following error我不断收到以下错误

  File "<stdin>", line 1, in <module>
ImportError: dlopen({myvenv}/lib/python3.8/site-packages/pyodbc.cpython-38-darwin.so, 2):
Symbol not found: _SQLAllocHandle
  Referenced from: {myvenv}/lib/python3.8/site-packages/pyodbc.cpython-38-darwin.so
  Expected in: flat namespace
 in {myvenv}/lib/python3.8/site-packages/pyodbc.cpython-38-darwin.so

If however, I do the exact same thing using Rosetta everything works fine.但是,如果我使用 Rosetta 做完全相同的事情,一切正常。 I couldn't find any other thread describing a similar behaviour.我找不到任何其他描述类似行为的线程。

Does anyone know how to resolve this issue?有谁知道如何解决这个问题?

My feeling is that the package is not compiled properly for arm.我的感觉是 package 没有为 arm 正确编译。

You can uninstall the pyodbc and install it again.您可以卸载 pyodbc 并重新安装。 If using brew, it woulid be like this:如果使用 brew,它会像这样:

pip uninstall pyodb

and install with compiling it locally:并在本地编译安装:

pip install --no-binary :all: pyodbc

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM