我努力的將一個簡單的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
你有沒有嘗試完整的路徑,所以像'source/usr/bin/python3/testpy3/bin/activate'? –
@AndyHayden嗯...不行 - 這似乎不工作?那是否會在那裏創建testpy3目錄呢? (我試過各種文件上的絕對路徑,以達到相同的效果?) – psychemedia
我不確定它將在哪裏創建,但如果可以找到它,可以使用完整路徑。首先想到它可能在家庭文件夾的某處,但不記得... –