在进入python或ipython解释器时自动导入模块

在进入python或ipython解释器时自动导入模块,python,numpy,ipython,Python,Numpy,Ipython,我发现自己几乎每次启动python解释器时都会键入import numpy as np。如何设置python或ipython解释器,以便自动导入numpy?使用环境变量。从官方文件: 如果这是可读文件的名称,则该文件中的Python命令 在interactive中显示第一个提示之前执行文件 模式该文件在与interactive相同的命名空间中执行 执行命令,以便可以在其中定义或导入对象 在交互会话中无条件使用 因此,只需使用import语句创建一个python脚本,并将环境变量指向它。话虽如此,

我发现自己几乎每次启动python解释器时都会键入
import numpy as np
。如何设置python或ipython解释器,以便自动导入numpy?

使用环境变量。从官方文件:

如果这是可读文件的名称,则该文件中的Python命令 在interactive中显示第一个提示之前执行文件 模式该文件在与interactive相同的命名空间中执行 执行命令,以便可以在其中定义或导入对象 在交互会话中无条件使用

因此,只需使用import语句创建一个python脚本,并将环境变量指向它。话虽如此,请记住“显式总是比隐式好”,所以不要将此行为用于生产脚本


对于Ipython,请参见关于如何制作Ipython_配置文件的教程。对于Ipython,有两种方法可以实现此目的。两者都涉及ipython的配置目录,该目录位于
~/.ipython

  • 创建自定义ipython配置文件
  • 或者您可以将启动文件添加到
    ~/.ipython/profile\u default/startup/
  • 为了简单起见,我会使用选项2。您只需在
    ~/.ipython/profile\u default/startup
    目录中放置一个
    .py
    .ipy
    文件,它就会自动执行。因此,您可以简单地将
    导入numpy作为np
    放在一个简单的文件中,这样就可以在ipython提示符的名称空间中找到np

    选项2实际上将使用自定义配置文件,但使用自定义配置文件将允许您根据特定情况更改启动要求和其他配置。但是,如果您总是希望
    np
    对您可用,那么请务必将其放在启动目录中


    有关ipython配置的更多信息。我使用的~/.startup.py文件如下所示:

    # Ned's .startup.py file
    print("(.startup.py)")
    import datetime, os, pprint, re, sys, time
    print("(imported datetime, os, pprint, re, sys, time)")
    
    pp = pprint.pprint
    
    然后定义PYTHONSTARTUP=~/.startup.py,Python将在启动shell时使用它

    print语句就在那里,所以当我启动shell时,我会得到一个提示,提示它已经生效,并且已经导入了什么。
    pp
    快捷方式也非常方便…

    如他所述,您可以创建自定义配置文件或修改默认配置文件。这个答案是快速查看自动
    将numpy导入为np
    所需的Linux命令

    如果要使用名为
    numpy
    的自定义配置文件,请运行:

    ipython profile create numpy
    echo 'import numpy as np' >> $(ipython locate profile numpy)/startup/00_imports.py
    ipython --profile=numpy
    
    或者,如果要修改默认配置文件以始终导入numpy:

    echo 'import numpy as np' >> $(ipython locate profile default)/startup/00_imports.py
    ipython
    

    查看以更深入地阅读有关配置文件的信息。请参见
    .ipython/profile\u default/startup/README
    以了解启动目录的工作原理。

    我的默认
    ipython
    调用是

    ipython --pylab --nosep --InteractiveShellApp.pylab_import_all=False
    
    --pylab
    作为一个
    ipython
    选项已经有一段时间了。它导入
    numpy
    和(部分)
    matplotlib
    。我添加了
    --Inter…
    选项,因此它不使用
    *
    导入,因为我更喜欢使用显式
    np…


    这可以是快捷方式、别名或脚本。

    在linux上,作为公认答案的更简单替代方案:


    只需定义一个别名,例如在~/.bash_别名文件中放置
    alias pynp='python-i-c“import numpy as np”
    。然后,您可以使用
    pynp
    调用python+numpy,并且仍然可以使用
    python
    的python。Python脚本的行为保持不变。

    虽然创建自定义启动脚本是大多数情况下最好的通用答案,但在希望使用来自未来导入X的
    的情况下,它将不起作用。如果您有时使用Python2.x,但希望使用现代除法,那么只有一种方法可以做到这一点。创建概要文件后,编辑
    profile\u default
    (对于Ubuntu,它位于
    ~/.ipython/profile\u default
    )并在底部添加如下内容:

    c.InteractiveShellApp.exec_lines = [
        'from __future__ import division, print_function',
        'import numpy as np',
        'import matplotlib.pyplot as plt',
        ]
    

    您可以创建一个普通的python脚本作为
    import\u numpy.py
    或任何您喜欢的东西

    #!/bin/env python3
    import numpy as np
    
    然后使用
    -i
    标志启动它

    python-i import\u numpy.py


    这样可以让您灵活地为不同的项目选择所需的模块。

    @mklauber,谢谢,但已接受的解决方案已被弃用。然而,它确实激发了我的编辑灵感。@OP:见我的编辑answer@user545424在撰写本文时(ipython 1.1.0)也支持PYTHONSTARTUP。设置
    env PYTHONSTARTUP=“~/.startup.py”
    对我不起作用,只需注意
    export PYTHONSTARTUP=~/.python\u shell\u startup.py
    来设置变量。在Linux上不起作用。我必须告诉Python查看我的主目录还是什么吗?哎呀,忘记了一个重要步骤:我添加了它:定义PythonStartup我永远不知道用
    ~
    代替
    $home
    什么时候行得通,但是我必须在MacOS、fish和python3上使用绝对路径来代替这个相对路径。@Ned Batcheld,非常感谢,这就是我要找的。附带问题,我在windows上使用这个,pp快捷方式不起作用。你能告诉我吗?>>>pp>>>pp()回溯(最近一次调用最后一次):文件“”,第1行,类型错误:pprint()缺少一个必需的位置参数:“object'>>>在Ubuntu 14.04中,目录实际上是:
    ~/.config/ipython/profile\u default/startup/
    而不是
    ~/.ipython/profile\u default/startup/
    ,不幸的是,上面的选项2不允许制表符完成。
    PYTHONSTARTUP
    仅在交互模式下调用,因此python脚本的行为始终保持不变。还可以使用文件引用创建别名:
    alias pynp='PYTHONSTARTUP=“~/.startup.py”python'
    这是金色的,谢谢