python - 在共享服务器上导入模块

0 投票
1 回答
1130 浏览
提问于 2025-04-17 03:38

我有一个叫做gmailCleaner.py的脚本,在我的电脑上运行得很好,可以按照我想要的方式调整我的Gmail(使用imap)。

所以我想把这个脚本放到我的网站上,让大家都能用(我的网站是共享主机,支持Python)。脚本可以运行,但就是无法连接到Gmail(使用的设置和我电脑上的一样,唯一的不同是我在电脑上用的是raw_input,而在服务器上用的是HTML表单的数据)。

我以为是因为服务器上缺少我用的imaplib文件,所以我把它上传到了服务器(和脚本放在同一个文件夹里),但还是不行。

现在出现了这个错误:'module' object has no attribute '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',说明脚本是有在运行的。

补充一下,代码现在还不是最用户友好的,只是想先让它能工作(删除特定发件人的所有邮件):

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 />'

1 个回答

0

如果你的共享服务器支持 pip install 和 virtualenv,可以试试这个方法:
virtualenv env --no-site-packages(这条命令是用来创建一个新的虚拟环境,叫做 env,并且不使用系统里已经安装的包)
pip install python<version>(这条命令是用来安装指定版本的 Python)
pip install otherpythonpackages(这条命令是用来安装其他你需要的 Python 包)

这样应该能解决你的问题。

撰写回答