当我尝试将雪花-sqlalchemy库附加到Databricks中的Python 3群集时,它破坏了我的python构建,并且在安装后续库时给了我以下错误:
AttributeError:cffi库'_openssl'没有函数,常量或 名为“ Cryptography_HAS_ED25519”的全局变量
我尝试将最新版本的密码学库分别附加到群集,但这给了我同样的问题。我认为这可能与以下链接有关:
https://github.com/snowflakedb/snowflake-connector-python/issues/32
在第二个链接中,它提到了一种解决方法:
The workaround is:
Uninstall cryptography by running pip uninstall cryptography
Delete the directory .../site-packages/cryptography/ manually
Reinstall snowflake-connector-python
Looks like the directory structure of cryptography changed since 1.7.2.*
有什么方法可以卸载Databricks中预先安装的cryptography 1.5 python库,以便我可以使用新的目录结构重新安装最新版本的cryptography(2.5)?
答案 0 :(得分:1)
过时的库:
%sh sudo apt-get install python3-pip -y
其次:
%sh pip3 install --upgrade snowflake-connector-python
有关更多详细信息,请参见https://datathirst.net/blog/2019/1/11/databricks-amp-snowflake-python-errors。
答案 1 :(得分:0)
我找到了解决我问题的方法。
此问题是由于Databricks中的openssl版本太旧而导致雪花SQLAlchemy无法使用它的原因。
解决方案如下:
升级画中画
%sh / databricks / python / bin / pip install --upgrade pip
卸载pyopenssl
%sh / databricks / python / bin / pip卸载pyopenssl -y
安装pyopenssl
%sh / databricks / python / bin / pip install --upgrade pyopenssl
安装雪花SQLAlchemy
%sh / databricks / python / bin / pip install --upgrade Snowal-SQLAlchemy
这个问题的答案很有帮助: Python AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
我使用以下代码创建了一个初始化文件:
dbutils.fs.mkdirs("dbfs:/databricks/init/")
dbutils.fs.put("dbfs:/databricks/init/sf-initiation.sh" ,"""
#!/bin/bash
/databricks/python/bin/pip install --upgrade pip
/databricks/python/bin/pip uninstall pyopenssl -y
/databricks/python/bin/pip install --upgrade pyopenssl
/databricks/python/bin/pip install --upgrade snowflake-sqlalchemy
""", True)
文件中的最后一条命令将更新所有过时的软件包,如下所示: Upgrading all packages with pip