当我尝试学习一些数据科学编码时,我在Spyder和jupyter笔记本之间进行了一些切换。因此,我想找到一种方法来判断是从一个函数调用另一个函数,还是从另一个脚本中停用仅适用于笔记本的部分。我认为%matplotlib inline
当我从Spyder运行代码时,类似以下内容的工作可以省去一部分:
if __name__ != '__main__':
%matplotlib inline
print('Hello, jupyter')
else:
print('Hello, Spyder')
但是__name__ = _main__
在这两种情况下,%matplotlib inline
按原样放置都会在Spyder中提出错误建议。
我在这里测试了建议:如何检查您是否在Jupyter笔记本中。那行得通,但由于我也在Spyder中运行IPython控制台,因此我感到有点困惑。另外,我希望你们中的一些人有其他建议!
谢谢!
似乎没有正确的方法或适用于未来的方法可以实现这一目标,但我会使用以下模式:
import os
if "JPY_PARENT_PID" in os.environ:
print('Hello, jupyter')
else:
print('Hello, Spyder')
它比这里给出的答案更具体,副作用更少。它既可以在jupyter笔记本电脑中使用,也可以在jupyter实验室中使用,所以我认为可以放心地将其面向未来一会儿是安全的。
让我知道它如何为您服务。
上面的解决方案仅适用于> 3.2的spyder
但是,也许以下解决方案适用于所有版本的jupyter笔记本电脑或spyder。基本来说,如果从上面循环,则是相同的,但是我们只是测试os.environ
spyder的存在。
import os
# spyder_env: was derived in spyder 3.2.8 ipython console running:
# [i for i in os.environ if i[:3] == "SPY"]
spyder_env = set(['SPYDER_ARGS',
'SPY_EXTERNAL_INTERPRETER',
'SPY_UMR_ENABLED',
'SPY_UMR_VERBOSE',
'SPY_UMR_NAMELIST',
'SPY_RUN_LINES_O',
'SPY_PYLAB_O',
'SPY_BACKEND_O',
'SPY_AUTOLOAD_PYLAB_O',
'SPY_FORMAT_O',
'SPY_RESOLUTION_O',
'SPY_WIDTH_O',
'SPY_HEIGHT_O',
'SPY_USE_FILE_O',
'SPY_RUN_FILE_O',
'SPY_AUTOCALL_O',
'SPY_GREEDY_O',
'SPY_SYMPY_O',
'SPY_RUN_CYTHON',
'SPYDER_PARENT_DIR'])
# Customize to account for spyder plugins running in jupyter notebook/lab.
n = 0
if "JPY_PARENT_PID" in os.environ:
# Compare the current os.environ.keys() to the known spyder os.environ.
overlap = spyder_env & set(os.environ.keys())
if len(overlap) == n:
print('Hello, jupyter')
# This could be a more specific elif statment if needed.
else:
print('Hello, Spyder')
这样可以为您解决问题吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句