我正在尝试使用AWS Lambda Python(Python btw中的初学者)开始运行,但是在包含MySQL依赖性方面存在一些问题。我试图按照我的Mac上的说明
here。
对于步骤3,我在我的项目根目录下执行命令时遇到一些问题
sudo pip install MySQL-python -t /
错误:
Exception:
Traceback (most recent call last):
File “/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py”, line 122, in main
status = self.run(options, args)
File “/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/install.py”, line 311, in run
os.path.join(options.target_dir, item)
File “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py”, line 292, in move
raise Error, “Destination path ‘%s’ already exists” % real_dst
Error: Destination path ‘/MySQL_python-1.2.5-py2.7.egg-info/MySQL_python-1.2.5-py2.7.egg-info’ already exists
我最终编写了我以下的lambda函数(在我的Mac上工作正常),它是:
import MySQLdb
def lambda_handler(event, context):
# Open database connection
db = MySQLdb.connect(...)
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "SELECT * FROM Users"
try:
# Execute the SQL command
cursor.execute(sql)
# Fetch all the rows in a list of lists.
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# Now print fetched result
print ("lname=%s" %(lname))
except:
print "Error: unable to fecth data"
# disconnect from server
db.close()
我继续做的是转到/Library/Python/2.7/site-packages并复制下载的MySQLdb文件夹/文件,当我做了sudo pip安装MySQL-python(没有-t /)(我是确定我在这里做错了),到我的lambda项目,然后压缩内容与lambda_function.py并上传到AWS Lambda。
然后我得到:
Unable to import module ‘lambda_function’: No module named MySQLdb
感谢任何帮助和建议!
编辑
能够做sudo pip安装MySQL-python -t / pathToProject工作(感谢在评论中的帮助),但现在我运行lambda函数时得到这个:
Unable to import module ‘lambda_function’: /var/task/_mysql.so: invalid ELF header
我知道如果我在一个Linux机箱上工作,那么它应该可以正常工作(如有些人建议的),但是我想知道是否可以使用它从一个OS X盒子中工作。