簡體   English   中英

在VM中通過Python3運行IPython Notebook

[英]Running IPython Notebook over Python3 in a VM

我正在努力整理一個簡單的虛擬機,我可以用它來運行Python3上的IPython筆記本。

我認為最好的方法是為Python設置虛擬環境,然后在啟動IPython服務器之前將所需的庫安裝到其中,盡管可能更好的方法是將virtualenv創建分離為shell腳本?

更新:我遇到的一個主要問題是路徑不完整......

##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'];
  }
}

如果我手動插入並安裝所有內容,我可以從命令行運行源命令。

但是,如果我嘗試用手工安裝的東西重新配置機器,我仍然會收到錯誤?

'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'"

但是一個新的問題是: 錯誤:/ Stage [main] / Infinite_interns :: Box :: Python3 / Exec [py3-venv] /返回:從notrun更改為0失敗:/ usr / bin / virtualenv --no-site- package -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內容,但是當它執行時我在VM中的virtualenv中看不到已安裝的庫?

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

答案:我放棄了virtualenv,並且正在尋求在全球范圍內“運行”python3。 我在ubuntu,所以需要easy_install3點,如https://askubuntu.com/questions/412178/how-to-install-pip-for-python-3-in-ubuntu-12-04-lts所述 ; 使用pip3作為提供者, https://github.com/bodepd/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb

在PS位上查看是否有效..

PS下一步將是通過etc / init中的文件運行筆記本 - 以下是否會這樣做? (我還沒有那么遠!)這可能有用嗎?或者python 3下的IPython筆記本是否使用了不同的起始咒語?!

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

有一點需要注意的是,我還沒有讓它可靠地為我工作(也就是說,它已經工作了幾次然后停止了,一些重新安裝工作而一些沒有[似乎受到你之后安裝的其他軟件包的影響,一個非干凈的DST安裝等],基於Data Science Toolbox構建你的VM,可以在這里找到: http//datasciencetoolbox.org/ 在我們的辦公室,我們還為基於Python 3和IPython的學生制作了一個包。

無論如何,我非常非常有興趣與你討論vagrant,python3和ipython之間的互動。

通過安裝Data Science Toolbox ,然后使用apt-get ipython3,ipython3-notebook,python3-pip和python3-dev進行安裝,可以輕松實現使用Python 3和IPython Notebook的工作VM。 似乎可以很好地使用當前版本的Data Science Toolbox。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM