Я пытаюсь встать и работать с AWS Lambda Python (новичок в Python), но с некоторыми проблемами с учетом зависимости от MySQL. Я стараюсь следовать инструкциям here на моем Mac.Проблемы с использованием MySQL с AWS Lambda в Python
На номере шага 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
Я заканчиваю писать свои следующие функции лямбды (работы штраф на моем 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_function.py и загрузили в AWS Lambda.
Тогда я получаю:
Unable to import module 'lambda_function': No module named MySQLdb
признателен за любую помощь и предложения!
EDIT
был в состоянии сделать сделать Судо пип установить MySQL-питон -t/pathToProject работу (спасибо за помощь в комментариях), но теперь я получаю это когда подножку функции лямбды:
Unable to import module 'lambda_function': /var/task/_mysql.so: invalid ELF header
Я знаю, что если я работаю на Linux-боксе, то он должен работать нормально (как это было предложено некоторыми людьми), но мне интересно, могу ли я заставить его работать из окна OS X.
Что такое вывод 's python -c 'import sys; print (sys.path)" '? Почему вы используете системный python? Разве вы не установили его в своем пути '/ usr/local' с помощью homebrew или macports? Если нет, вы должны. Вам не нужно использовать 'sudo' для pip, потому что он будет принадлежать вашему собственному пользователю и не будет изменять файлы, принадлежащие системе. Кроме того, он будет полностью отделен от питона, от которого зависит ваша система. Это также будет более новая версия, так как она из репозитория. –
Если у вас его нет, установите homebrew с инструкцией 'curl' с' http: // brew.sh', а затем запустите 'brew install python'' pip install MySQLdb'. Убедитесь, что ваш python находится в/usr/local/bin, запустив 'which python' - homebrew будет устанавливать переменную $ PATH для поиска в'/usr/local/', чтобы найти правильный питон. –
Спасибо за комментарии, будет использовать homebrew для установки. Будем держать вас в курсе (btw Я новичок в Python, поэтому спасибо, что помогли мне разгоняться) –