无法从 运行 IPython nbconvert Python2.7 虚拟环境
Unable To Run IPython nbconvert From Python2.7 Virtual Environment
我有一个 Python 2.7 的虚拟环境,安装了 ipython (Ubuntu 16.04.2(Xenial)LTS。)
当我在虚拟环境中工作时(运行 source venv/bin/activate
in bash shell while being in虚拟环境的父目录)我可以像这样从 bash shell 执行我的木星笔记本的转换:
ipython nbconvert --to html --execute my_notes.ipynb --stdout > /tmp/report.html
但是当我尝试使用 subprocess
从 fabric 的任务中调用该命令时:
command = ['ipython', 'nbconvert', '--to', 'html', '--execute', notebook_path, '--stdout']
output = subprocess.check_output(command,
cwd=os.environ['PYTHONPATH'],
env=os.environ.copy())
它总是因为这个异常而失败我找不到原因:
Traceback (most recent call last):
File "/opt/backend/venv/bin/ipython", line 7, in <module>
from IPython import start_ipython
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/__init__.py", line 48, in <module>
from .core.application import Application
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/application.py", line 25, in <module>
from IPython.core import release, crashhandler
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/crashhandler.py", line 28, in <module>
from IPython.core import ultratb
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/ultratb.py", line 119, in <module>
from IPython.core import debugger
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/debugger.py", line 46, in <module>
from pdb import Pdb as OldPdb
File "/usr/lib/python2.7/pdb.py", line 59, in <module>
class Pdb(bdb.Bdb, cmd.Cmd):
AttributeError: 'module' object has no attribute 'Cmd'
了解更多信息以节省您的时间。
我试过:
- 对 PYTHONPATH 使用与我从 PyCharm run/debug 配置中获得的相同路径。
- 使用 nbconvert 作为 python 库 from this documentation.
- 尝试过
os.system("ipython nbconvert…")
。
- 使用 shell 脚本包装工作命令 (
ipython nbconvert…
) 并在 subprocess.check_output
和 os.system
. 中使用它
- 喝醉了,把我的头撞在砖墙上。
并且总是以那个该死的异常结束。
重新发布作为完整性的答案:
在某个地方有一个名为 cmd.py
的文件,Python 发现它是一个可导入的模块。这隐藏了标准库中的 cmd module,它由 IPython 导入的 pdb 使用。当 pdb 试图从 cmd
子class a class 时,class 不存在。将 cmd.py
移开,让它找到所需的 cmd 模块。
这对 Python 来说是一个不幸的烦恼 - 许多短词已被用作模块名称,您自己使用它们会导致崩溃,并出现各种不同的错误。
我有一个 Python 2.7 的虚拟环境,安装了 ipython (Ubuntu 16.04.2(Xenial)LTS。)
当我在虚拟环境中工作时(运行 source venv/bin/activate
in bash shell while being in虚拟环境的父目录)我可以像这样从 bash shell 执行我的木星笔记本的转换:
ipython nbconvert --to html --execute my_notes.ipynb --stdout > /tmp/report.html
但是当我尝试使用 subprocess
从 fabric 的任务中调用该命令时:
command = ['ipython', 'nbconvert', '--to', 'html', '--execute', notebook_path, '--stdout']
output = subprocess.check_output(command,
cwd=os.environ['PYTHONPATH'],
env=os.environ.copy())
它总是因为这个异常而失败我找不到原因:
Traceback (most recent call last):
File "/opt/backend/venv/bin/ipython", line 7, in <module>
from IPython import start_ipython
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/__init__.py", line 48, in <module>
from .core.application import Application
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/application.py", line 25, in <module>
from IPython.core import release, crashhandler
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/crashhandler.py", line 28, in <module>
from IPython.core import ultratb
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/ultratb.py", line 119, in <module>
from IPython.core import debugger
File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/debugger.py", line 46, in <module>
from pdb import Pdb as OldPdb
File "/usr/lib/python2.7/pdb.py", line 59, in <module>
class Pdb(bdb.Bdb, cmd.Cmd):
AttributeError: 'module' object has no attribute 'Cmd'
了解更多信息以节省您的时间。
我试过:
- 对 PYTHONPATH 使用与我从 PyCharm run/debug 配置中获得的相同路径。
- 使用 nbconvert 作为 python 库 from this documentation.
- 尝试过
os.system("ipython nbconvert…")
。 - 使用 shell 脚本包装工作命令 (
ipython nbconvert…
) 并在subprocess.check_output
和os.system
. 中使用它
- 喝醉了,把我的头撞在砖墙上。
并且总是以那个该死的异常结束。
重新发布作为完整性的答案:
在某个地方有一个名为 cmd.py
的文件,Python 发现它是一个可导入的模块。这隐藏了标准库中的 cmd module,它由 IPython 导入的 pdb 使用。当 pdb 试图从 cmd
子class a class 时,class 不存在。将 cmd.py
移开,让它找到所需的 cmd 模块。
这对 Python 来说是一个不幸的烦恼 - 许多短词已被用作模块名称,您自己使用它们会导致崩溃,并出现各种不同的错误。