与AttributeError Python命令执行失败

学习如何当一个Python命令与AttributeError砖笔记本失败。

写的亚当Pavlacka

去年发表在:2022年5月19日

这篇文章可以帮助您解决场景Python命令执行失败的AttributeError

问题:“元组对象没有属性“类型”

当您运行一个笔记本,Python命令执行失败与以下错误和堆栈跟踪:

AttributeError:“元组”对象没有属性“类型”
回溯(最近调用最后):文件“/ local_disk0 / tmp / 1547561952809 - 0 / PythonShell。py”第23行,在<模块>进口matplotlib mpl文件“/砖/ python /地方/ lib / python2.7 /网站/ matplotlib / __init__。py”, 122行,从matplotlib <模块>。进口图书贝贝is_string_like mplDeprecation,取消缩进,get_label文件“/砖/ python /地方/ lib / python2.7 /网站/ matplotlib /图书贝贝。py”, 33岁的线在<模块>进口numpy np文件“/砖/ python /地方/ lib / python2.7 /网站/ numpy / __init__。py”, 142行,在<模块>。进口核心文件“/砖/ python /地方/ lib / python2.7 /网站/ numpy /核心/ __init__。py”, 57岁,在<模块>。进口numerictypes nt文件“/砖/ python /地方/ lib / python2.7 /网站/ numpy / / numerictypes核心。py”, 111行,在<模块> ._type_aliases进口(文件“/砖/ python /地方/ lib / python2.7 /网站/ numpy /核心/ _type_aliases。py”, 63行,在<模块> _concrete_types = {v。在_concrete_typeinfo.items类型k、v()}文件“/砖/ python /地方/ lib / python2.7 /网站/ numpy /核心/ _type_aliases。py”, 63行,在< setcomp > _concrete_types = {v。在_concrete_typeinfo.items类型k、v ()} AttributeError:“元组”对象没有属性“类型”19/01/15 11:29:26警告PythonDriverWrapper: setupRepl: ReplId-7d8d1-8cc01-2d329-9:最后,状态是错误(ReplId-7d8d1-8cc01-2d329, com.databricks.backend.daemon.driver。PythonDriverLocal PythonException美元:Python shell未能在30秒开始)

导致

一个新版本的numpy(1.16.1),它由一些PyPI客户安装在默认情况下,与其他库不兼容。

解决方案

按照以下步骤创建一个集群级init脚本(AWS|Azure|GCP),删除当前版本并安装numpy 1.15.0版本。

  1. 如果init脚本已经不存在,创建一个基本目录来存储:
    % python dbutils.fs.mkdirs (“dbfs: /砖/ <目录> /”)
  2. 创建以下脚本:
    % python dbutils.fs.put (“dbfs: /砖/ <目录> / numpy。sh”、“”“# !/bin/bash pip卸载——是的numpy rm射频/home/ubuntu/databricks/python/lib/python3.5/site-packages rm / numpy *射频/砖/ python / lib / python3.5 /网站/ numpy * /usr/bin/yes | /home/ubuntu/databricks/python/bin/pip安装numpy = = 1.15.0”“”,真的)
  3. 确认脚本存在:
    % python显示器(dbutils.fs.ls (“dbfs: /砖/ <目录> / numpy.sh”))
  4. 去集群配置页面(AWS|Azure|GCP),然后点击高级选项切换。
  5. 在页面的底部,单击Init脚本标签:Init脚本选项卡的形象。
  6. 目的地下拉,选择DBFS提供这个脚本文件路径,点击添加
  7. 重新启动集群。
  8. 在PyPI客户端,销numpy1.15.1安装版本,最新的工作版本。

问题:模块“自由”没有属性“SSL_ST_INIT”

当您运行一个笔记本,图书馆安装失败和笔记本电脑上执行的所有Python命令取消了下面的错误和堆栈跟踪:

AttributeError:模块“自由”没有属性“SSL_ST_INIT”
回溯(最近调用最后):文件“/砖/ python3 / bin /脉冲”,第7行,皮普的<模块>。_internal进口主文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _internal / __init__。py”,第40行,从pip._internal.cli <模块>。自动完成导入自动完成文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _internal / cli /自动完成。py”, 8号线,在从pip._internal.cli <模块>。main_parser导入create_main_parser文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _internal / cli / main_parser。py”第12行,在<模块> pip._internal.commands进口(文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _internal /命令/ __init__。py”, 6号线,在<模块> pip._internal.commands.completion CompletionCommand文件导入”/砖/ python3 / lib / python3.5 /网站/脉冲/ _internal /命令/完成。py”, 6号线,从pip._internal.cli <模块>。base_command导入命令文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _internal / cli / base_command。py”第20行,从pip._internal <模块>。下载导入PipSession文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _internal /下载。py”,第15行,皮普的<模块>。_vendor导入请求6 urllib3文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _vendor /请求/ __init__。py”, 97行,从pip._vendor.urllib3 <模块>。contrib导入pyopenssl文件“/砖/ python3 / lib / python3.5 /网站/脉冲/ _vendor urllib3 / contrib / pyopenssl。py”, 46岁,在<模块>进口OpenSSL。SSL文件“/砖/ python3 / lib / python3.5 /网站/ OpenSSL / __init__。py", line 8, in  from OpenSSL import rand, crypto, SSL File "/databricks/python3/lib/python3.5/site-packages/OpenSSL/SSL.py", line 124, in  SSL_ST_INIT = _lib.SSL_ST_INIT AttributeError: module 'lib' has no attribute 'SSL_ST_INIT'

导致

一个更新版本的密码学包(在这种情况下,2.7)被安装在默认情况下随着另一个PyPI库,这密码学版本是不兼容的版本pyOpenSSL包含在砖运行时。

解决方案

为了解决和防止这个问题,升级pyOpenSSL之前最新版本安装任何库。使用一个集群级init脚本(AWS|Azure|GCP安装最新版本的pyOpenSSL:

  1. 如果init脚本已经不存在,创建一个基本目录来存储:
    % python dbutils.fs.mkdirs (“dbfs: /砖/ <目录> /”)
  2. 创建以下脚本:
    % python dbutils.fs.put (“dbfs: /砖/ <目录> / openssl_fix。sh”、“”“# !/bin/bash回声“删除pyOpenSSL包”rm射频/砖/ python2 / lib / python2.7 /网站/ OpenSSL rm射频/砖/ python2 / lib / python2.7 /网站/ pyOpenSSL-16.0.0 - *。egg-info rm射频/砖/ python3 / lib / python3.5 /网站/ OpenSSL rm射频/砖/ python3 / lib / python3.5 /网站/ pyOpenSSL-16.0.0 *。egg-info /砖/ python2 / bin / pip安装pyOpenSSL = = 19.0.0 /砖/ python3 / bin / pip3安装pyOpenSSL = = 19.0.0”“”,真的)
  3. 确认脚本存在:
    % python显示器(dbutils.fs.ls (“dbfs: /砖/ <目录> / openssl_fix.sh”))
  4. 去集群配置页面(AWS|Azure|GCP),然后点击高级选项切换。
  5. 在页面的底部,单击Init脚本标签:Init脚本选项卡的形象。
  6. 目的地下拉,选择DBFS提供这个脚本文件路径,点击添加
  7. 重新启动集群。
这篇文章有用吗?