2015-08-13 71 views
0

作爲一個絕對廚師初學者我嘗試設置一個vm與最新的python和django。我使用「ubuntu/trusty64」框,並驚訝它的python3版本沒有安裝pip和pyvenv。 所以我不得不從源代碼安裝最新的python版本3.4.3,這似乎工作正常。但是,試圖點子安裝與廚師Django的時候,我總是得到同樣的錯誤說:安裝django使用vagrant與廚師獨奏供應商

廚師::例外::套餐:沒有候選版本Django的

我python3食譜:

package "python" 

execute "update system" do 
    command "sudo apt-get update -y" 
    not_if { File.exists?('/tmp/Python-3.4.3')} 
end 

execute "get dependencies" do 
    command "sudo apt-get install -y build-essential libbz2-dev libncurses5-dev libreadline6-dev libsqlite3-dev libgdbm-dev liblzma-dev tk8.6-dev libssl-dev python3-setuptools" 
    not_if { File.exists?('/tmp/Python-3.4.3')} 
end 

%w[ /opt/python /djenv ].each do |path| 
directory path do 
    owner 'vagrant' 
    group 'vagrant' 
    mode '0755' 
    end 
end 

bash 'install-python3.4.3' do 
    user 'vagrant' 
    cwd '/tmp' 
    code <<-EOH 
    set -e 
    wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz 
    tar -xvf Python-3.4.3.tgz 
    rm Python-3.4.3.tgz 
    cd Python-3.4.3 
    ./configure --prefix=/opt/python 
    make 
    make install 
    EOH 
    not_if { File.exists?('/tmp/Python-3.4.3')} 
end 

execute "set pyvenv environment to /djenv" do 
    command "/opt/python/bin/pyvenv /djenv" 
    only_if{File.exists?('/opt/python/bin/python3')} 
end 

Django的食譜:

package 'django' 

execute "activate env" do 
    command "source /djenv/bin/activate" 
end 

execute "install django and gunicorn" do 
    command "pip install gunicorn && pip install Django==1.8.3" 
    not_if {File.exists('/vagrant/../manage.py')} 
end 

execute "deactivate" do 
    command "deactivate" 
end 

我basicaly跟隨this教程,並嘗試將其翻譯成廚師。

+0

我想,你不明白什麼'包裝'意味着廚師食譜。 https://docs.chef.io/resource_package.html –

+0

好吧.....所以這將是一個easy_install_package,因爲沒有pip_package?或者只是將包裝聲明離開? 感謝您的提示。 – FitzPatrick

回答

1
package 'python3' #will install python 
package 'python3-pip' #will install pip3 

execute 'pip3 install django' do #install django from command line with pip 
    not_if "pip3 list | grep django" #only if it is not installed yet 
end 
execute 'pip3 install gunicorn' do 
    not_if "pip3 list | grep gunicorn" 
end