centos中使用python遇到的幾個問題



      用python搞了一個從excel中讀取cobbler節點信息並加入cobbler中的腳本,運行的過程中出了不少問題,這里記錄下來,方便日后查找!

 

一、yum install python,我通過這個命令安裝python,默認安裝的是2.6的版本,但是當我把python 2.6安裝完成后,發現cobbler的WEB管理頁面無法打開了,查看apahce的錯誤日志:

 

[Sun Jul 07 20:13:01 2013] [error] [client 192.168.21.94] ImportError: cannot import name urandom
[Sun Jul 07 20:13:02 2013] [error] [client 192.168.21.94] File does not exist: /var/www/html/favicon.ico
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94] mod_wsgi (pid=10816): Target WSGI script '/usr/share/cobbler/web/cobbler.w
sgi' cannot be loaded as Python module.
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94] mod_wsgi (pid=10816): Exception occurred processing WSGI script '/usr/shar
e/cobbler/web/cobbler.wsgi'.
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94] Traceback (most recent call last):
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]   File "/usr/share/cobbler/web/cobbler.wsgi", line 9, in <module>
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]     import django.core.handlers.wsgi
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]   File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", li
ne 10, in <module>
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]     from django import http
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]   File "/usr/lib/python2.6/site-packages/django/http/__init__.py", line 12
3, in <module>
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]     from django.utils.http import cookie_date
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]   File "/usr/lib/python2.6/site-packages/django/utils/http.py", line 7, in
 <module>
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]     from email.Utils import formatdate
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]   File "/usr/lib64/python2.6/email/__init__.py", line 79, in __getattr__
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]     __import__(self.__name__)
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]   File "/usr/lib64/python2.6/email/utils.py", line 27, in <module>
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]     import random
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]   File "/usr/lib64/python2.6/random.py", line 47, in <module>
[Sun Jul 07 20:31:09 2013] [error] [client 192.168.21.94]     from os import urandom as _urandom


缺少urandom模塊,python2.6版本里默認沒有這個模塊,隨即將python升級到2.7版本。

升級過程:

1、下載Python 2.7源碼:

  wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz

下載

2、解壓源碼包:

   tar -zxvf Python-2.7.2.tgz

3、編譯:

   cd Python-2.7.2

   ./configure  --prefix=/usr

4、make&&make install

安裝完成后測試web界面可以正常打開了,但是使用yum安裝軟件的時候會發現不能使用,原因是yum與python有依賴關系,yum是急於python寫的,運行yum命令時會調用pyton;

vi /usr/bin/yum

將#!/usr/bin/pyton 改成:#!/usr/bin/pyton2.6,改成你系統默認的版本即可,不然他會調用高版本的python軟件包,但是是找不到的,需要做相關配置才行,這里為了方便就直接改了就可以使用了。

二、在安裝了python2.7后執行cobbler的相關命令也會有問題

[root@cobbler scripts]# ./addnode2.py cobbler.xls 
add test1 aa:bb:cc:dd 19:2.:16:8.:0.:2
add test2 aa:bb:cc:dd 19:2.:16:8.:0.:3
[root@cobbler scripts]# Traceback (most recent call last):
  File "/usr/bin/cobbler", line 17, in <module>
    import cobbler.cli as app
ImportError: No module named cobbler.cli
Traceback (most recent call last):
  File "/usr/bin/cobbler", line 17, in <module>
    import cobbler.cli as app
ImportError: No module named cobbler.cli

[root@cobbler scripts]# cobbler get-loaders
Traceback (most recent call last):
  File "/usr/bin/cobbler", line 17, in <module>
    import cobbler.cli as app
ImportError: No module named cobbler.cli


這也是由於python版本導致的,同樣:vi /usr/bin/cobbler

將調用的python版本修改為2.6即可。

三、補充:關於安裝EasyInstall 遇到的問題:

下載:

wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg

安裝:

sh  setuptools-0.6c11-py2.7.egg


報錯:

Traceback (most recent call last):  
File "<string>", line 1, in <module> 
zipimport.ZipImportError: can't decompress data; zlib not available 



 

解決方法:

1、安裝依賴zlib、zlib-devel

2、重新編譯安裝Python

 

./configure 
編輯Modules/Setup文件 
找到下面這句,去掉注釋 
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz 
重新編譯安裝:make & make install 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM