如何将类路径传递给ipython';从ipzope呼叫时,是谁的笔记本?
我已经使用iypthon作为ipzope(buildout)中的设置有一段时间了,它可以正常工作 现在我试图使用ipython的笔记本,但我无法正确设置它 当我创建一个新笔记本时,它会用一个如何将类路径传递给ipython';从ipzope呼叫时,是谁的笔记本?,python,ipython-notebook,buildout,Python,Ipython Notebook,Buildout,我已经使用iypthon作为ipzope(buildout)中的设置有一段时间了,它可以正常工作 现在我试图使用ipython的笔记本,但我无法正确设置它 当我创建一个新笔记本时,它会用一个ImportError(见下文)停止IPython的内核。 我猜IPython.html.notebook.start()中创建的线程会打开webbrowser,而不会从调用进程传递sys.path 我的解决方法是将ipzope中的路径添加到PYTHONPATH 当我添加所有路径时,ipython的笔记本工作
ImportError
(见下文)停止IPython的内核。
我猜IPython.html.notebook.start()
中创建的线程会打开webbrowser
,而不会从调用进程传递sys.path
我的解决方法是将ipzope
中的路径添加到PYTHONPATH
当我添加所有路径时,ipython的笔记本工作得非常好,我可以调试和操作Plone
如果我只将ipython
、pyzmq
、Jinja
和tornado
添加到PYTHONPATH
ipython的笔记本上,但它无法访问ipzope
变量(app
,utils
等)
问题:有没有提示如何在不使用PYTHONPATH的情况下将路径传递到ipython的笔记本
我从ipzope
开始使用
sys.argv[1:1] = "notebook --ip=192.168.45.135 --profile=zope".split()
最重要的是:
IPython Notebook 14-03-22 14:57:17.141 [NotebookApp] Connecting to: tcp://127.0.0.1:50948
2014-03-22 14:57:17.143 [NotebookApp] Kernel started: b573fbc0-5dee-410b-91cb-01afd2e9acce
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named IPython.kernel.zmq.kernelapp
IPython笔记本14-03-22 14:57:17.141[NotebookApp]连接到:tcp://127.0.0.1:50948
2014-03-22 14:57:17.143[NotebookApp]内核已启动:b573fbc0-5dee-410b-91cb-01afd2e9acce
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为IPython.kernel.zmq.kernelapp的模块
我引述Min RK
:
“当您启动普通终端IPython时,将在
相同的进程。这意味着IPython在与相同的上下文中执行
您对sys.path所做的更改,因此这些更改具有所需的效果
在笔记本中,只有笔记本服务器存在于其中
内核作为子进程启动,从而重新创建
sys.path,遵循Python的标准过程
进程,并且不继承任何可能会导致错误的对sys.path的运行时更改
已在父进程中发生。”
()
我的解决方案
因此,将路径传递到笔记本的唯一方法是通过PYTHONPATH
我现在的解决方法是在脚本中设置os.environ['PYTHONPATH']=':'.join(sys.path)
。这样,您就不需要弄乱系统的PYTHONPATH(如果有的话),并且确保所有必要的路径都将传递到内核
os.environ
作为Popen
的env
参数传递给launch_kernel
中的子进程(../ipython-1.2.1-py2.7.egg/ipython/kernel/launcher.py
)
如果需要使用ipython的笔记本并希望buildout生成脚本,请将以下内容添加到您的buildout中(例如在../Plone-4.3.2/zeocluster/develope.cfg
)
parts +=
...
ipzopenb
...
[ipzopenb]
recipe = zc.recipe.egg
eggs =
ipython
pyzmq
tornado
Jinja2
#following for nbconvert
Pygments
Sphinx
${client2:eggs}
initialization =
import sys, os
os.environ["INSTANCE_HOME"] = "${client2:location}"
os.environ['PYTHONPATH'] = ':'.join(sys.path)
sys.argv[1:1] = "notebook --ip=192.168.45.135 --profile=zope".split()
scripts = ipython=ipzopenb
...
[versions]
Jinja2 = 2.7.2
Pygments = 1.6
Sphinx = 1.2.2