- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想拥有
from __future__ import (absolute_import, division, print_function, unicode_literals)
在每个交互式 session 中加载,使用 PYTHONSTARTUP
文件。这适用于基本的 python(2.7.5,与 Anaconda 一起安装),但不适用于 ipython(1.0.0,Anaconda)。其他 import
语句适用于 ipython,但 __future__
语句将被忽略(尽管如果我在命令行中输入它们它们会起作用)。这是一个 ipython 错误,还是我遗漏了什么?
最佳答案
这里有两个问题。
第一个比 __future__
语句更通用:至少在我的测试中,ipython 1.0.0 和更早版本根本不处理 PYTHONSTARTUP
环境变量.您可以很容易地看到这一点:
$ echo -e 'print "PYTHONSTARTUP!"\n' > pythonstartup.py
$ PYTHONSTARTUP=./pythonstartup.py ipython
没有额外的打印出来。
#2706建议它应该这样做,#3569打了补丁,1.1.0 似乎是第一个有变化的版本。
因此,解决方法是升级到 1.1.0。或者,如果您坚持使用旧版本,请执行 #2706 中的建议,并将其添加到您的第一个 $IPYTHONDIR/profile_default/startup/*py
文件中:
import os
if os.environ['PYTHONSTARTUP']:
execfile(os.environ['PYTHONSTARTUP'])
但是,这仍然不能解决问题。
$PYTHONSTARTUP
的运行方式(由您显式执行或由 iPython 隐式执行)等同于 exec
。它确实明确地向 exec
提供了适当的 globals
,这确保您最终得到可用的 print_function
元组……但这不会影响解析器。 (比较在交互式 shell 中键入 exec('from __future__ import print_function
)`。)
同样适用于上述启动文件、向后兼容的 ipython.rc
文件(如果您启用了该文件)以及任何其他应该在您的文件中执行的文件交互式环境——它们实际上只是在您的 globals
中被 exec
执行,这不是一回事。
即使在您的 ipython_config.py
或其他应用程序配置脚本中作为 exec_files
机制的一部分执行的文件也以这种方式处理。
但是,作为exec_lines
机制的一部分执行的行不是。所以,这就是解决方案。
编辑或创建 ~/.ipython/profile_default/ipython_config.py
。 (如果您使用不同的配置文件、ipythondir、应用程序名称等,您大概知道这些,并且知道如何调整。)
如果它不存在,添加这一行:
c = get_config()
然后添加:
c.InteractiveShellApp.exec_lines = ['from __future__ import print_function']
参见 Configuring the ipython command line application了解更多详情。
如果你真的想,你可能会做这样的事情:
import os
try:
# Make sure to pop it so it won't get exec'd later in the startup
pythonstartup = os.environ.pop('PYTHONSTARTUP')
with open(pythonstartup) as f:
c.InteractiveShellApp.exec_lines.append(list(f))
except KeyError:
pass
但这看起来很老套。
关于python - 将 'from __future__' 与 ipython 和 PYTHONSTARTUP 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260119/
我正在尝试使用 PYTHONSTARTUP 环境变量。我在我的电脑-->高级等里设置成"c:\python25\pythonstartup.py",好像不行。 打开 IDLE 不运行脚本,尽管它识别了
我听说过 PYTHONSTARTUP 文件是启动 python 时自动加载指定模块和其他代码的一种方式。但 PYTHONSTARTUP 是一个全局事物,适用于所有 python 实例。是否有像 PYT
我正在看这个Stack Overflow answer在其中,作者说原始海报要检查 PYTHONSTARTUP 变量是否已定义。我环顾四周,找不到如何检查它是否已定义。 如何检查PYTHONSTART
全部, 我最近发现了 PYTHONSTARTUP 环境变量,并期待设置我的几个实用函数以自动加载到我的解释器中。但是,我希望能够做的一件事是使用相同的脚本来设置环境变量本身。 我的问题是确定文件何时作
我正在运行 Python 3.7.5。 当我开发一个程序 myprog.py 时,我经常运行 $ python3 -i myprog.py 这让我可以交互地测试功能,这非常有用。 不幸的是,如 Pyt
我想拥有 from __future__ import (absolute_import, division, print_function, unicode_literals) 在每个交互式 ses
我终于开始在 Linux 上同时使用 python 3 和 python 2.7。 我使用 $PYTHONSTARTUP 定义的启动脚本设置我的 python shell。由于不兼容,我无法对两个版本
我是一名优秀的程序员,十分优秀!