2011-10-04 70 views
0

我有一個名爲gmailCleaner.py的腳本,在我的電腦上它運行得很好,並按照我想要的方式調整我的Gmail(使用imap)。python - 在共享服務器上導入模塊

所以我想讓我的網站上的每個人都可以使用這個腳本(共享主機,python啓用)腳本運行但無法連接到Gmail(使用與我的電腦相同的設置,只有不同的是,我在PC上使用raw_input和在服務器上我使用fata從html表格)

我認爲這是因爲他們缺乏我使用的imaplib文件 - 所以我上傳到服務器(與腳本相同的文件夾)它沒有工作。

新:收到此錯誤: '模塊' 對象有沒有屬性 'IMAP4_SSL'

任何形式的幫助將是不錯的

代碼:

#!/usr/bin/python 

import imaplib 
import os 
import cgi 

print 'Content-type: text/html\n\n' 

try: 
    M=imaplib.IMAP4_SSL('imap.gmail.com', 993) 
except: 
    print 'cannot connect to gmail<br />' 

和失敗:S 它打印'無法連接到Gmail'意味着它運行。

編輯的評論,還不是最用戶友好的代碼以往,只是想讓它先工作(刪除從pesific發送的所有電子郵件):

try:  
    USER = form.getvalue('username') 
    PASS = form.getvalue('password') 
    SENDER = form.getvalue('from') 
    print USER 
except: 
    print 'cannot get form info<br />' 

try: 
    M=imaplib.IMAP4_SSL('imap.gmail.com', 993) 
    M.login(USER +'@gmail.com',PASS) 
    status, count = M.select('Inbox') 
except Exception as e: print e 

try: 
    SENDER = '\"' + SENDER + '\"' 
    data = M.search(None, 'FROM', SENDER) 
    a = str(data[1]) 
    a = a.split() 
    b = '' 
    i = 0 
    while i < len(a[-1]) - 2: 
     b = b + a[-1][i] 
     i += 1 
    a[-1] = b 
    b = '' 
    i = 2 
    while i < len(a[0]): 
     b = b + a[0][i] 
     i += 1 
    a[0] = b 
except: 
    print 'cannot get ids<br />' 


try: 
    print 'deleting!<br />' 
    i = 0 
    while i < len(a): 
     M.store(a[i], '+FLAGS', '\\Deleted') 
     i += 1 
except: 
    print 'cannot delete<br />' 
+0

您需要確實發現錯誤並進行打印。像'除了例外作爲e:打印e' – agf

+0

我更感興趣的是看到你的源代碼:) – Kracekumar

+0

我換了我的除了用行提供@agf除了例外作爲e:打印e和現在它給了我404錯誤時我嘗試調用它(當我刪除該行時,它仍然可以找到腳本) – galtzhayek

回答

0

如果您共享服務器支持PIP安裝的virtualenv,嘗試這
virtualenv env --no-site-packages
pip install python<version>
pip install otherpythonpackages

這應該解決您的問題。

+0

我不知道pip安裝和virtualenv是什麼(用google搜索了一下),但他們不讓我有任何安裝訪問,所以我假設我不能這樣做...... – galtzhayek

+0

'pip'用於安裝python軟件包,'virtualenv '用於在env中執行python程序,您可以擁有所有依賴項,這樣,不同的用戶就可以使用不同的版本和庫,而無需安裝系統。 – Kracekumar

+0

所以我應該只是將這3行作爲python腳本運行? – galtzhayek