Sto cercando di iniziare a utilizzare AWS Lambda Python (principiante in Python btw) ma con alcuni problemi con l'inclusione della dipendenza MySQL. Sto cercando di seguire le istruzioni here sul mio Mac.Problemi di utilizzo di MySQL con AWS Lambda in Python
Per numero di passo 3, io sono sempre alcuni problemi con il fare il comando alla base del mio progetto
sudo pip install MySQL-python -t/
Errore:
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
finisco per scrivere le mie seguente funzione lambda (opere bene sul mio Mac), che è:
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()
Quello che ho continuato a fare è andare a /Library/Python/2.7/site-p ackage e copia delle cartelle/file MySQLdb che sono stati scaricati quando ho fatto sudo pip installare MySQL-python (senza -t /) (sono sicuro che sto facendo qualcosa di sbagliato qui), al mio progetto lambda, e poi zippato il contenuto insieme a lambda_function.py e caricato su AWS Lambda.
tanto sono:
Unable to import module 'lambda_function': No module named MySQLdb
grato per qualsiasi aiuto e suggerimenti!
EDIT
è stato in grado di fare fare sudo pip installare MySQL-python -t/pathToProject lavoro (grazie per l'aiuto nei commenti), ma ora ottengo questo quando runing la funzione lambda:
Unable to import module 'lambda_function': /var/task/_mysql.so: invalid ELF header
So che se lavoro su una macchina Linux, quindi dovrebbe funzionare bene (come suggerito da alcune persone), ma mi chiedo se posso farlo funzionare da una scatola OS X.
Qual è l'output di 'python -c" import sys; print (sys.path) "'? Perché stai usando il sistema python? Non ne hai installato uno nel percorso '/ usr/local' con homebrew o macports? Se no, dovresti. Non avrai bisogno di usare 'sudo' per pip perché sarà di proprietà del tuo utente e non cambierà alcun file di proprietà del sistema. Inoltre, sarà completamente separato dal python da cui dipende il tuo sistema. Sarà anche una versione più recente, poiché proviene da un repository. –
Se non ce l'hai, installa homebrew con l'istruzione 'curl' da' http: // brew.sh' e quindi esegui 'brew install python'. Pip installa MySQLdb'. Verifica che il tuo python sia in/usr/local/bin eseguendo 'which python' - homebrew avrà impostato la variabile $ PATH per cercare in/usr/local /' per trovare il python corretto. –
Grazie per i commenti, userà homebrew per l'installazione. Ti terremo aggiornato (per fortuna sono un principiante in Python, quindi grazie per avermi aiutato) –