Python命令執行失敗屬性

本文可以幫助您解決python命令執行失敗的方案屬性

問題:``元組''目的屬性'類型'

運行筆記本時,python命令執行失敗,並堆棧跟蹤:

attributeError:'tuple'對象沒有屬性'type'
Trackback(最近的最新電話):文件“/local_disk0/tmp/1547561952809-0/pythonshell.py”,第23行,in 導入matplotlib作為MPL文件“/databricks/python/local/lib/python2.7/site-packages/matplotlib/__init__.py”,第122行,在來自matplotlib.cbook導入is_string_like,mpldeprecation,deDent,get_label文件“/databricks/python/local/lib/python2.7/site-packages/matplotlib/cbook.py”,第33行,in 導入numpy作為NP文件“/databricks/python/local/lib/python2.7/site-packages/numpy/__init__.py”,第142行,在從 。導入核心文件“/databricks/python/local/lib/python2.7/site-packages/numpy/core/core/__init__.py”,第57行,in 從 。導入數字類型為nt文件“/databricks/python/local/lib/python2.7/site-packages/numpy/core/numerictypes.py”,第111行,in 來自._type_aliases導入(文件“/databricks/python/local/lib/python2.7/site-packages/numpy/core/_type_aliases.py”,第63行,in _concrete_types = {v.type fork,v in _concrete_typeinfo.items()}}文件“/databricks/python/local/lib/python2.7/site-packages/numpy/core/_type_aliases.py”,第63行,in  in_concrete_types = {v.type fork,v in _concrete_typeinfo.items()}}attributeError:'tuple'對象沒有屬性'type'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客戶端安裝,與其他庫不兼容。

解決方案

按照下麵的步驟創建一個群集宣傳的初始腳本刪除了當前版本並安裝了版本1.15.0的numpy

  1. 如果啟動腳本尚未存在,請創建一個基本目錄以存儲它:

    dbutilsFSmkdirs((“ dbfs:/databricks//”
  2. 創建以下腳本:

    • 如果群集正在運行Python 2,請使用此初始腳本:

      dbutilsFS((“ dbfs:/databricks//numpy.sh”,,,,”“”#!/bin/bashpip卸載 - 是的rm -rf/home/ubuntu/databricks/python/lib/python2.7/site-packages/numpy**rm -rf/databricks/python/lib/python2.7/site-packages/numpy*/usr/bin/yes |/home/ubuntu/databricks/python/bin/pip安裝numpy == 1.15.0”“”,,,,真的
    • 如果集群正在運行Python 3,請使用此初始腳本:

    dbutilsFS((“ dbfs:/databricks//numpy.sh”,,,,”“”#!/bin/bashpip卸載 - 是的rm -rf/home/ubuntu/databricks/python/lib/python3.5/site-packages/numpy**rm -rf/databricks/python/lib/python3.5/site-packages/numpy*/usr/bin/yes |/home/ubuntu/databricks/python/bin/pip安裝numpy == 1.15.0”“”,,,,真的
  3. 確認腳本存在:

    展示((dbutilsFSLS((“ dbfs:/databricks//numpy.sh”))
  4. 集群配置頁麵並單擊高級選項切換。

  5. 在頁麵的底部,單擊初始腳本標簽:

    無文本
  6. 在裏麵目的地下拉,選擇DBFS,提供腳本的文件路徑,然後單擊添加

  7. 重新啟動集群。

  8. 在您的PYPI客戶端,請numpy安裝到1.15.1版本,最新的工作版本。

問題:模塊'lib'屬性'ssl_st_init'

運行筆記本電腦時,庫安裝失敗,並且在筆記本上執行的所有Python命令將取消以下錯誤和堆棧跟蹤:

attributeError:模塊'lib'沒有屬性'ssl_st_init'
Trackback(最近的最新通話):文件“/databricks/python3/bin/pip”,第7行,<模塊>來自pip._internal導入主文件“/databricks/python3/lib/python3.5/site-packages/pip/_internal/__init__.py”,第40行,in 來自pip._internal.cli.autocompletion導入自動完成文件“/databricks/python3/lib/python3.5/site-packages/pip/_internal/cli/cli/autocolmetion.py”,第8行,在來自pip._internal.cli.main_parser導入create_main_parser文件“/databricks/python3/lib/python3.5/site-packages/pip/_internal/cli/cli/main_parser.py.py”,第12行,in 來自pip._internal.commands導入(文件“/databricks/python3/lib/python3.5/site-packages/pip/_internal/commands/commands/__init__.py”,第6行,in 來自pip._internal.commands.completion導入完成command文件“/databricks/python3/lib/python3.5/site-packages/pip/_internal/commands/commands/completion.py”,第6行,in 來自pip._internal.cli.base_command導入命令文件“/databricks/python3/lib/python3.5/site-packages/pip/_internal/cli/cli/base_command.py”,第20行,in 來自pip._internal.download導入pipsession文件“/databricks/python3/lib/python3.5/site-packages/pip/_internal/download.py”,第15行,來自pip._vendor導入請求,六個,urllib3文件“/databricks/python3/lib/python3.5/site-packages/pip/_vendor/requests/requests/__init__.py”,第97行,在來自pip._vendor.urllib3.contrib導入pyopenssl文件“/databricks/python3/lib/python3.5/site-packages/pip/_vendor/urllib3/contrib/contrib/pyopenssl.py”,第46行,導入Openssl.ssl文件“/databricks/python3/lib/python3.5/site-packages/openssl/__init__.py”,第8行,來自OpenSSL Import Rand,Crypto,SSL文件“/databricks/python3/lib/python3.5/site-packages/openssl/ssl.py”,第124行,in ssl_st_init = _lib.ssl_st_init attributeError:module'lib'沒有屬性'ssl_st_init'

原因

較新的版本的密碼學默認情況下安裝了軟件包(在這種情況下為2.7)以及另一個PYPI庫,這是密碼學版本與版本不兼容Pyopenssl包含在Databricks Runtimes中。

解決方案

為了解決和防止此問題,請升級Pyopenssl在安裝任何庫之前,要在最新版本中。用一個群集宣傳的初始腳本安裝最新版本的Pyopenssl

  1. 創建一個基本目錄來存儲Init腳本:

    dbutilsFSmkdirs((“ dbfs:/databricks//”
  2. 創建以下腳本:

    dbutilsFS((“ dbfs:/databricks//openssl_fix.sh”,,,,”“”#!/bin/bash回聲“刪除Pyopenssl軟件包”rm -rf/databricks/python2/lib/python2.7/site-packages/opensslrm -rf/databricks/python2/lib/python2.7/site-packages/pyopenssl-16.0.0.0.0-go.egg-inform -rf/databricks/python3/lib/python3.5/site-packages/opensslrm -rf/databricks/python3/lib/python3.5/site-packages/pyopenssl-16.0.0.0go.egg-info/databricks/python2/bin/pip install pyopenssl == 19.0.0/databricks/python3/bin/pip3 install pyopenssl == 19.0.0”“”,,,,真的
  3. 確認腳本存在:

    展示((dbutilsFSLS((“ dbfs:/databricks//openssl_fix.sh”))
  4. 集群配置頁麵並單擊高級選項切換。

  5. 在頁麵的底部,單擊初始腳本標簽:

    無文本
  6. 在裏麵目的地下拉,選擇DBFS,提供腳本的文件路徑,然後單擊添加

  7. 重新啟動集群。