2017-07-29 9 views
0

私は外部ライブラリ "user-agents"が必要なPython UDFを使ってハイブテーブル(hdfsスポットインスタンス)を変換したいと思っています。外部ライブラリを使用しない私のudfは正常に動作しています。しかし、私はそれを使いたいときに仕事をすることができません。Pythonで外部ライブラリを使用する方法UDF for hive?

以下のコード自体を使用してライブラリをインストールしようとしました。

import sys 
import subprocess 
import pip 
import os 



sys.stdout = open(os.devnull, 'w+') 
pip.main(['install', '--user', 'pyyaml']) 
pip.main(['install', '--user', 'ua-parser']) 
pip.main(['install', '--user', 'user-agents']) 
sys.stdout = sys.__stdout__ 

と、この後、私はこの

import user_agents 

を試みたが、UDFは「いいえモジュールが見つからない」例外でクラッシュしています。私はコードを通して以下のパスをチェックしようとしました:

/usr/local/lib/python2.7/site-packages 
/usr/local/lib64/python2.7/site-packages 

しかし、user_agentsモジュールはありませんでした。どのようにそれを行うには、何かを働かせるための任意のヘルプ?それは本当に感謝します。ありがとう!

答えて

1

私はこれを解決しました。この同じUDFの問題を解決していてまだ成功していない人にとっては、おそらくこのソリューションを試して、それが彼らのために働くかどうかを確認することができます。外部ライブラリについては

、次の手順を実行します。

ステップ1:強制ピップあなたのUDFの現在の作業ディレクトリにコード自体を介して外部ライブラリをインストールするには。

import sys 
import os 
import pip 

sys.stdout = open(os.devnull, 'w+') 
pip.main(['install', 'user-agents', '-t', os.getcwd(), '--ignore-installed']) 
sys.stdout = sys.__stdout__ 

ステップ2:更新してのsys.path

sys.path.append(os.getcwd()) 

ステップ3:今、図書館:)これだけです

from user_agents import parse 

をインポートします。これも確認して確認してください。

関連する問題