AWS Lambda Python(初心者はPython btw)で起動していますが、MySQLの依存関係を含むいくつかの問題があります。私は私のMacの指示hereに従おうとしています。ステップ数3の場合PythonでAWS LambdaでMySQLを使用する際の問題
、私は私のプロジェクトのルートでコマンドを実行するといくつかの問題を取得しています
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-pに行くことですsudo pipを使ってMySQL-pythonをインストールしたときにダウンロードされたMySQLdbフォルダ/ファイル(私はここで何か間違っていると確信しています)、そして私のラムダプロジェクトにコピーして圧縮しますコンテンツをlambda_function.pyとともにAWS Lambdaにアップロードします。
それから私は得る:任意のヘルプや提案のための
Unable to import module 'lambda_function': No module named MySQLdb
グレイト!
EDIT
はsudoのピップは、MySQL-pythonの-t/pathToProject仕事をインストールします(コメントで助けに感謝)を行うことができましたが、ラムダ関数をruningてたときに、今、私はこれを取得:
Unable to import module 'lambda_function': /var/task/_mysql.so: invalid ELF header
私はLinuxのボックスで作業するなら、それはうまくいくはずです(人によって示唆されるように)が、OS Xのボックスから動作させることができるかどうかは疑問です。
'python -c" import sys; print(sys.path) "'の出力は何ですか?なぜあなたはシステムPythonを使用していますか? homebrewやmacportsで '/ usr/local'のパスにインストールしていないのですか?もしそうでなければ、あなたはすべきです。 pipは自分の所有者であり、システム所有のファイルを変更しないので、 'sudo'をpipのために使う必要はありません。また、あなたのシステムが依存するpythonから完全に分離されます。それはリポジトリからのものなので、新しいバージョンにもなります。 –
持っていない場合は、http:// brew.shの 'curl'命令でhomebrewをインストールし、' brew install python' 'pip install mysqldb'を実行してください。 'which python'を実行してあなたのPythonが/ usr/local/binにあることを確認します。 - homebrewはあなたの$ PATH変数を設定して正しいPythonを見つけるために'/usr/local/'を調べます。 –
コメントをいただきありがとうございます。ホームブリュを使用してインストールします。あなたは更新され続けるでしょうか(私はPython初心者ですので、私は助けてくれてありがとう) –