首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同python环境下的tqdm变化

不同python环境下的tqdm变化
EN

Stack Overflow用户
提问于 2017-07-06 15:14:10
回答 2查看 1.1K关注 0票数 3

我正在使用在python中显示进度条的tqdm包。

tqdm还为木星笔记本(tqdm_notebook())提供了一个小部件,允许一个漂亮的“网络式”进度条。

我的问题是,我在code.py文件中有一个tqdm进度条,导入到jupyter笔记本中。

在从常规python (即IpythonIDLEshell)运行tqdm时,我希望tqdm以正常形式运行:

代码语言:javascript
复制
from tqdm import tqdm
a = 0
for i in tqdm(range(2000)):
   a+=i

但是当我将code.py导入木星时,我希望它使用tqdm_notebook()

代码语言:javascript
复制
from tqdm import tqdm_notebook as tqdm
a = 0
for i in tqdm(range(2000)):
   a+=i

如何使python区分环境?

我发现这个职位建议检查get_ipython().__class__.__name__'ipykernel' in sys.modules,但它没有区分笔记本和其他Ipython (比如Spyder或空闲)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-07 15:54:24

显然,在这里使用sys.argv是有帮助的。

代码语言:javascript
复制
import sys
print sys.argv

Jupyter中运行此代码将具有以下参数:

代码语言:javascript
复制
['C:\\Users\\...\\lib\\site-packages\\ipykernel\\__main__.py',
 '-f',
 'C:\\Users\\...\\jupyter\\runtime\\kernel-###.json']

当然,从shell/空闲运行时不会有jupyter行。

因此,code.py中的导入语句应该是:

代码语言:javascript
复制
if any('jupyter' in arg for arg in sys.argv):
    from tqdm import tqdm_notebook as tqdm
else:
   from tqdm import tqdm
票数 2
EN

Stack Overflow用户

发布于 2019-06-11 15:34:09

tqdm现在有一个autonotebook模块。来自文档

通过使用autonotebook子模块,可以让tqdm自动选择控制台版本还是笔记本版本:

代码语言:javascript
复制
from tqdm.autonotebook import tqdm
tqdm.pandas()

注意,如果在笔记本中运行,这将发出一个TqdmExperimentalWarning,因为它不可能区分jupyter笔记本和jupyter控制台。使用auto而不是autonotebook来抑制此警告。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44952863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档