【问题标题】:Running IPython Notebook over Python3 in a VM在 VM 中通过 Python3 运行 IPython Notebook
【发布时间】:2025-11-26 02:20:03
【问题描述】:

我正在努力组装一个简单的 VM,我可以用它在 Python3 上运行 IPython 笔记本。

我认为最好的方法是为 Python 设置一个虚拟环境,然后在启动 IPython 服务器之前将所需的库安装到其中,尽管也许更好的方法是将虚拟环境的创建分离到一个 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'];
  }
}

如果我手动 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'"

但出现了一个新问题:错误:/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] 之一 p>

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 中安装的库在虚拟机中?

所以现在的问题是:puppet pip 可以将库安装到 virtualenv testpy3 中吗?或者我最好不要使用 virtualenv,直接调用 python3 和相关工具?

ANSWER:我已经放弃了 virtualenv,并准备在全局范围内“只”运行 python3。我在ubuntu上,所以需要easy_install3 pip,如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 notebook 使用不同的起始咒语?!

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

【问题讨论】:

  • 你试过完整路径吗,比如source /usr/bin/python3/testpy3/bin/activate
  • @AndyHayden 嗯......不 - 这似乎不起作用?无论如何都会创建 testpy3 目录吗? (我尝试了文件上的各种绝对路径以达到相同的效果?)
  • 我不确定它会在哪里创建,但也许如果你能找到它,你可以使用完整路径。首先认为它可能在某处的主文件夹中,但不记得了......
  • 你为什么使用虚拟机?
  • @filmor 我们正在打包一个虚拟机供远程教育学生使用 - 预装了各种库和数据库,因此他们可以使用任何平台、云虚拟机等

标签: python python-3.x vagrant puppet ipython-notebook


【解决方案1】:

需要注意的是,我还没有完全让它可靠地为我工作(也就是说,它工作了几次然后停止了,有些重新安装工作,有些没有[似乎受到其他软件包的影响,你会之后安装,非干净的 DST 安装等]),基于 Data Science Toolbox 构建您的 VM,可在此处找到:http://datasciencetoolbox.org/。在我们的办公室,我们还在为学生制作基于 Python 3 和 IPython 的软件包。

无论如何,我非常非常有兴趣与您讨论 vagrant、python3 和 ipython 之间的交互。

【讨论】:

  • 嗨,Rachel - 我现在有一个可以运行的 VM,其中包含一系列数据工具 - pandas、mongodb、postgresql、openrefine。很高兴与您分享构建并进一步聊天 - tony DOT hirst THAT'LL_BE_AT open DOT ac uk
  • 嘿,托尼,你知道吗,_at open dot ac dot uk?或..点acuk?或 .. 点 ac?
【解决方案2】:

通过安装Data Science Toolbox 然后使用apt-get ipython3、ipython3-notebook、python3-pip 和 python3-dev 安装,使用 Python 3 和 IPython Notebook 似乎很容易实现。似乎与当前版本的 Data Science Toolbox 配合得很好。

【讨论】:

    最近更新 更多