Я пытаюсь встать и работать с AWS Lambda Python (новичок в Python), но с некоторыми проблемами с включением зависимости MySQL. Я стараюсь следовать инструкциям здесь на моем Mac.
Для шага номер 3 у меня возникают некоторые проблемы с выполнением команды в корне моего проекта
sudo pip install MySQL-python -t /
Ошибка:
Исключение: Traceback (последний последний вызов): Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py", строка 122, в основном status = self.run(опции, args) Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/install.py", строка 311, в запуске os.path.join(options.target_dir, item) Файл "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", строка 292, в движении raise Error ", путь назначения" % s "уже существует" % real_dst Ошибка: путь назначения '/MySQL_python-1.2.5-py2.7.egg-info/MySQL_python-1.2.5-py2.7.egg-info' уже существует
В конечном итоге я пишу свою следующую лямбда-функцию (отлично работает на моем 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 install MySQL-python (без -t/) ( Я уверен, что я делаю что-то не так), в мой проект лямбда, а затем закрепил содержимое вместе с lambda_function.py и загрузил его в AWS Lambda.
Тогда я получаю:
Невозможно импортировать модуль lambda_function: нет модуля с именем MySQLdb
Благодарен за любую помощь и предложения!
ИЗМЕНИТЬ
Было возможно сделать sudo pip install MySQL-python -t/pathToProject (спасибо за помощь в комментариях), но теперь я получаю это при запуске лямбда-функции:
Невозможно импортировать модуль 'lambda_function':/var/task/_mysql.so: недопустимый заголовок ELF
Я знаю, что если я работаю в Linux-боксе, тогда он должен работать нормально (как это было предложено некоторыми людьми), но мне интересно, могу ли я заставить его работать из окна OS X.