2017-11-25 11 views
0

ec2インスタンスを起動しているときにこのコードを実行していますが、pythonはインストールされていますが、フォルダは作成されていません。ec2の起動bashコマンドが機能しない

#!/bin/bash 

sudo yum update -y 

sudo yum install python36 -y 

mkdir venv 

cd venv 

virtualenv -p /usr/bin/pyton3.6 python36 

echo "source /home/ec2-user/venv/python36/bin/activate" > /home/ec2-user/.bashrc 

pip install boto3 
+1

スクリプトをインストールPIPアクティブにrootとして実行されています。だから、あなたはvenvディレクトリの間違った場所を探しているかもしれません。あなたはmkdirで完全なパスを追加できますか? mkdir/home/ec2-user/venv? – sudo

答えて

3

このスクリプトでは、いくつかの問題が発生する可能性があります。私はそれを書くために、より堅牢な方法を提案する:

#!/bin/bash 

cd "$(dirname "$0")" 

sudo yum update -y 
sudo yum install python36 -y 

if [ ! -d venv ]; then 
    mkdir venv 
    virtualenv -p /usr/bin/pyton3.6 venv/python36 

    echo "source venv/python36/bin/activate" >> ~/.bashrc 

    source venv/python36/bin/activate 
    pip install boto3 
fi 

の改善のポイント:

  • スクリプト
  • のディレクトリにcdをすることによって、我々は正しいディレクトリにあることを確認してくださいはしないでください~
  • 既に存在する場合、~/.bashrc
  • 012をインストールする前に切り捨てないでください。、それはそうpipが仮想ENV内でそれをインストールしません、仮想のenvをアクティブにすることが重要です
+0

これはEC2起動スクリプトであるため、 'userdata'にあります。これは、実際にはrootとして実行されており、最終的にはvirtualenvを使用するユーザーではないec2ユーザーではありません。 – jarmod

0

入力いただき、ありがとうございます(それがシステム全体をインストールしようとします)。これはうまくいった。主 :

  • 明確なパス
  • はboto3のための仮想環境をアクティブpython36をインストールsudoのyumを

    -y

「#/ binに/ bashの

sudoのyumのアップデートをインストール! -y

mkdir/home/ec2-user/venv

CD /ホーム/ EC2ユーザー/ venv

virtualenvの-p /usr/bin/python3.6 python36

エコー「のソース/ホーム/ EC2ユーザー/ venv/python36/binに/アクティベート「>> /home/ec2-user/.bashrc

ソース/ホーム/ EC2ユーザー/ venv/python36/binに/

は、ユーザデータでboto3

関連する問題