2014-04-10 65 views
3

我努力的將一個簡單的VM放在一起,我可以使用它來通過Python3運行IPython筆記本。在VM3上通過Python3運行IPython Notebook

我認爲最好的方法是爲Python設置一個虛擬env,然後在啓動IPython服務器之前將所需的庫安裝到該環境中,但也許更好的辦法是將virtualenv創建分離爲一個shell腳本?

UPDATE:一個主要的問題,我是不完整的路徑...

##Vagrantfile 

Vagrant.configure("2") do |config| 

    config.vm.box = "precise64" 
    config.vm.box_url = "http://files.vagrantup.com/precise64.box" 

    config.ssh.forward_x11 = true 

    config.vm.provision :puppet, 
    :options => "--modulepath=/vagrant/modules" do |puppet| 
    puppet.manifests_path = "." 
    puppet.manifest_file = "site.pp" 
    end 

    config.vm.define :python3 do |python3| 
    python3.vm.hostname = "python3" 
    python3.vm.provider :virtualbox do |virtualbox| 
     virtualbox.name = "python3" 
    end 
    python3.vm.network :forwarded_port, guest: 8888, host: 8888 
    end 
end 

###site.pp 
node default { 
    include testVM 
} 


#in modules/testVM//manifests/box/python3.pp 
class testVM::box::python3 { 
    #I was hoping this require statement would install python3 & virtualenv first? 
    require python3::base 

    #But it doesn't seem to because the following exec runs first and fails? 
    #ssh'ing into the VM and the base packages didn't install? 
    exec { 
    'py3-venv': 
     command => '/usr/bin/virtualenv --python=/usr/bin/python3 testpy3', 
     require => Package['openssh-server','python-virtualenv']; 
    ##I think problem is narrowed down to this - how do I run source or . ? 
    'py3-activate': 
     command => 'source testpy3/bin/activate', 
     require=>Exec['py3-venv']; 
    } 

    #Try to add in a dependency to force package install - still doesn't work? 
    Package['python3']->Exec['py3-venv'] 

    #Install in a small package to check it appears in python3 env 
    package { 
    [ 
     'ipythonblocks' 
    ]: ensure => latest, 
     provider => 'pip'; 
    } 
} 

#I assumed this would install before the exec fired but it doesn't seem to? 
class testVM::box::python3::base { 
    package { 'python3': 
    ensure => latest 
    } 
    package { 
    [ 'ipython3', 
     'python-virtualenv' 
    ]: require => Package['python3']; 
    } 
} 

如果我在ssh和安裝由手的一切,我可以運行在命令行的源命令的罰款。

但是,如果我嘗試重新配置手動安裝的機器,我仍然會出現錯誤?

'source testpy3/bin/activate' is not qualified and no path was specified. Please qualify the command or specify a path.

解決這一問題:該溶液source不是合格的問題可以在這裏找到:https://ask.puppetlabs.com/question/2177/how-to-execute-source-command/ 解決方法是:command => "/bin/bash -c 'source testpy3/bin/activate'"

BUT產生新的問題:ERR:/ Stage [main]/Infinite_interns :: Box :: Python3/Exec [py3-venv]/returns:從notrun變爲0失敗:/ usr/bin/virtualenv --no-site-packages --python =/usr/bin/python3 testpy3在/vagrant/modules/infinite_interns/manifests/box/python3.pp:14返回1而不是[0]之一。

DOH - 在我實際腳本我有/usr/bin/virtualenv –-no-site-packages --python=/usr/bin/python3 testpy3,它應該是剛剛在/ usr/bin中/ virtualenv中--python =的/ usr/bin中/ python3 testpy3`

所以說現在一切都很好..

更新2 - 或不是..我添加了Exec['py3-venv']->Package['ipythonblocks']以確保在嘗試通過pip安裝附加模塊之前已經安裝並執行了virtualenv的東西,但是在執行時,我無法在virtualenv中看到已安裝的庫在VM中?

所以現在的問題是:可以傀儡pip安裝庫到virtualenv testpy3?m或者我最好不要使用virtualenv並直接調用python3和相關工具?

回答:我已經放棄了virtualenv,並且正在爲在全球範圍內運行python3的'just'做準備。我在Ubuntu上,所以需要按照https://askubuntu.com/questions/412178/how-to-install-pip-for-python-3-in-ubuntu-12-04-lts中描述的easy_install3 pip;使用PIP3作爲供應商,https://github.com/bodepd/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb

走上PS位,看看是否能工程..

PS下一步將是通過獲得在等/ init中的文件運行的筆記本電腦 - 將以下做它? (我還沒有那麼遠!)這可能是工作還是IPython筆記本下python 3使用不同的起始咒語?!

script 
    export HOME="/root" 
    /vagrant/notebooks/ipython3 notebook --ip 0.0.0.0 
end script 
+0

你有沒有嘗試完整的路徑,所以像'source/usr/bin/python3/testpy3/bin/activate'? –

+0

@AndyHayden嗯...不行 - 這似乎不工作?那是否會在那裏創建testpy3目錄呢? (我試過各種文件上的絕對路徑,以達到相同的效果?) – psychemedia

+0

我不確定它將在哪裏創建,但如果可以找到它,可以使用完整路徑。首先想到它可能在家庭文件夾的某處,但不記得... –

回答

0

需要提醒的是我還沒有完全得到它爲我可靠的(也就是工作,它的工作幾次&然後停下來,重新安裝一些工作&有些不[似乎是受影響其他軟件包,你會安裝後,非乾淨的DST安裝等]),基於數據科學工具箱建立您的虛擬機,在這裏找到:http://datasciencetoolbox.org/。在我們的辦公室裏,我們還爲基於Python 3和IPython的學生製作了一個包。

無論如何,我會非常有興趣與你談談流浪者,python3,& ipython之間的互動。

+0

嗨Rachel - 我現在有一個虛擬機,這種作品,包括範圍數據工具 - 熊貓,mongodb,postgresql,openrefine。很高興與你分享生成和進一步聊天 - tony DOT hirst THAT'LL_BE_AT開放DOT ac英國 – psychemedia

+0

嘿託尼,是託尼點渴望你知道,_at開放點ac點英國?或..點acuk?或..點ac? – rachel

0

使用Python 3和IPython Notebook的工作虛擬機似乎很容易通過安裝Data Science Toolbox,然後使用ipython3,ipython3-notebook,python3-pip和python3-dev安裝apt-get來實現。似乎與Data Science Toolbox的當前版本很好地協同工作。

相關問題