不同 python 环境中的 tqdm 变化
tqdm variations in different python enviroments
我正在使用在 python 中显示进度条的 tqdm
包。
tqdm 还有一个用于 Jupyter 笔记本的小部件 (tqdm_notebook()
),允许一个漂亮的 "web-ish" 进度条。
我的问题是 code.py
文件中有一个 tqdm 进度条,我将其导入 jupyter notebook。
虽然 运行从常规 python 环境(即 Ipython
、IDLE
、shell
)中 code.py
,但我希望 tqdm 运行 正常形式:
from tqdm import tqdm
a = 0
for i in tqdm(range(2000)):
a+=i
但是当我将 code.py
导入 Jupyter 时,我希望它使用 tqdm_notebook()
:
from tqdm import tqdm_notebook as tqdm
a = 0
for i in tqdm(range(2000)):
a+=i
如何让python区分环境?
我发现 this post 建议检查 get_ipython().__class__.__name__
或 'ipykernel' in sys.modules
但它不区分笔记本和其他 Ipython 外壳(例如 Spyder 或 IDLE)。
显然,使用 sys.argv
可以提供帮助。
import sys
print sys.argv
运行 Jupyter
中的代码将具有以下参数:
['C:\Users\...\lib\site-packages\ipykernel\__main__.py',
'-f',
'C:\Users\...\jupyter\runtime\kernel-###.json']
当然 shell/IDLE 中的 运行 不会有 jupyter
行。
因此 code.py
中的导入语句应该是:
if any('jupyter' in arg for arg in sys.argv):
from tqdm import tqdm_notebook as tqdm
else:
from tqdm import tqdm
tqdm
现在有一个 autonotebook
模块。来自 doc:
可以使用 autonotebook 子模块让 tqdm 在控制台或笔记本版本之间自动选择:
from tqdm.autonotebook import tqdm
tqdm.pandas()
请注意,这将在笔记本中发出 TqdmExperimentalWarning
if 运行,因为无法区分 jupyter notebook 和 jupyter console。 使用 auto 而不是 autonotebook 来抑制此警告。
我正在使用在 python 中显示进度条的 tqdm
包。
tqdm 还有一个用于 Jupyter 笔记本的小部件 (tqdm_notebook()
),允许一个漂亮的 "web-ish" 进度条。
我的问题是 code.py
文件中有一个 tqdm 进度条,我将其导入 jupyter notebook。
虽然 运行从常规 python 环境(即 Ipython
、IDLE
、shell
)中 code.py
,但我希望 tqdm 运行 正常形式:
from tqdm import tqdm
a = 0
for i in tqdm(range(2000)):
a+=i
但是当我将 code.py
导入 Jupyter 时,我希望它使用 tqdm_notebook()
:
from tqdm import tqdm_notebook as tqdm
a = 0
for i in tqdm(range(2000)):
a+=i
如何让python区分环境?
我发现 this post 建议检查 get_ipython().__class__.__name__
或 'ipykernel' in sys.modules
但它不区分笔记本和其他 Ipython 外壳(例如 Spyder 或 IDLE)。
显然,使用 sys.argv
可以提供帮助。
import sys
print sys.argv
运行 Jupyter
中的代码将具有以下参数:
['C:\Users\...\lib\site-packages\ipykernel\__main__.py',
'-f',
'C:\Users\...\jupyter\runtime\kernel-###.json']
当然 shell/IDLE 中的 运行 不会有 jupyter
行。
因此 code.py
中的导入语句应该是:
if any('jupyter' in arg for arg in sys.argv):
from tqdm import tqdm_notebook as tqdm
else:
from tqdm import tqdm
tqdm
现在有一个 autonotebook
模块。来自 doc:
可以使用 autonotebook 子模块让 tqdm 在控制台或笔记本版本之间自动选择:
from tqdm.autonotebook import tqdm
tqdm.pandas()
请注意,这将在笔记本中发出 TqdmExperimentalWarning
if 运行,因为无法区分 jupyter notebook 和 jupyter console。 使用 auto 而不是 autonotebook 来抑制此警告。