2015-08-16 31 views
1

因此,我正在努力通過Jenkins和Ansible實現自動登臺部署。其中一部分是使用名爲ec2.py的腳本,以便動態檢索要部署到的匹配服務器列表。「xml.sax._exceptions.SAXReaderNotAvailable:找不到解析器」當在jenkins中運行時

通過SSH連接到Jenkins服務器並從jenkins用戶運行腳本,該腳本按預期運行。然而,詹金斯內運行該腳本會導致以下錯誤:

ERROR: Inventory script (ec2/ec2.py) had an execution error: Traceback (most recent call last): 
File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy API/workspace/deploy/ec2/ec2.py", line 1262, in <module> 
Ec2Inventory() 
File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy API/workspace/deploy/ec2/ec2.py", line 159, in __init__ 
self.do_api_calls_update_cache() 
File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy API/workspace/deploy/ec2/ec2.py", line 386, in do_api_calls_update_cache 
self.get_instances_by_region(region) 
File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy API/workspace/deploy/ec2/ec2.py", line 417, in get_instances_by_region 
reservations.extend(conn.get_all_instances(filters = { filter_key : filter_values })) 
File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy API/workspace/deploy/.local/lib/python2.7/site-packages/boto/ec2/connection.py", line 585, in get_all_instances 
max_results=max_results) 
File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy API/workspace/deploy/.local/lib/python2.7/site-packages/boto/ec2/connection.py", line 681, in get_all_reservations 
[('item', Reservation)], verb='POST') 
File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy API/workspace/deploy/.local/lib/python2.7/site-packages/boto/connection.py", line 1181, in get_list 
xml.sax.parseString(body, h) 
File "/usr/lib/python2.7/xml/sax/__init__.py", line 43, in parseString 
parser = make_parser() 
File "/usr/lib/python2.7/xml/sax/__init__.py", line 93, in make_parser 
raise SAXReaderNotAvailable("No parsers found", None) 
xml.sax._exceptions.SAXReaderNotAvailable: No parsers found 

我不知道太多關於蟒蛇,所以我不知道如何進一步調試這個問題。

回答

1

所以事實證明,問題是與詹金斯改寫默認LD_LIBRARY_PATH變量。通過unset運行python之前的變量,我能夠使python應用程序工作!

+0

你到底是怎麼做到的? – sscirrus

+0

查閱關於在bash中使用unset命令的文檔 –

相關問題