2013-07-15 61 views
2

我創建了一個python(我使用2.4)腳本來自動在httpd.conf中創建一個虛擬主機。但是,當我運行它,它提供了以下錯誤:通過python創建虛擬主機

Traceback (most recent call last): 
    File "ApaPy2.py", line 2, in ? 
    from io import open 
ImportError: No module named io 

這是我的腳本

import os 
from io import open 
project = raw_input(u'Enter the name of project ') 
domain = raw_input (u'Enter the domain ') 
docroot = raw_input(u'Enter root folder ') 

virtualhost=u""" 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /""" +docroot+ u"""/""" +project+ u""" 
    ServerName """ +project+ u""".""" +domain+ u""".com 
    ErrorLog logs/""" +project+ u""".com-error_log 
    CustomLog logs/""" +project+ u""".com-access_log common 
</VirtualHost>""" 

f = open(u'/etc/httpd/conf/httpd.conf', u'a') 
f.write(virtualhost) 
f.close() 

回答

2

io模塊是在Python 2.6引入的,所以它不存在2.4。從documentation

New in version 2.6.

open關鍵字應該可以正常工作了,你在這裏做什麼。

+0

是的,它的工作。謝謝。 –

1

我從來沒有使用python 2.4,但documentation表示io模塊已經添加到2.6版本,所以你不能在2.4中導入它。

我認爲open已經內置功能2.4,雖然如此,簡單地移除from io import open線應該夠了。

5

io模塊在2.4中不存在(在這種情況下,您不需要它使用open)。我也將簡化代碼中使用%,而不是使用字符串格式化:

project = raw_input(u'Enter the name of project ') 
domain = raw_input (u'Enter the domain ') 
docroot = raw_input(u'Enter root folder ') 

virtualhost=u""" 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /%(docroot)s/%(project)s 
    ServerName %(project)s.%(domain)s.com 
    ErrorLog logs/%(project)s.com-error_log 
    CustomLog logs/%(project)s.com-access_log common 
</VirtualHost>""" 

f = open(u'/etc/httpd/conf/httpd.conf', u'a') 
f.write(virtualhost % dict(project=project, docroot=docroot, domain=domain) 
f.close() 
+0

是的,這是完美的。其實我一直在Python 3上工作,所以我不知道這個事實。謝謝。 –

0

的IO模塊沒有在Python 2.4存在。您對open的使用很簡單,所以您可以省略該行,並且open語句仍然可以正常工作。