【问题标题】:How can I start ipython running a script?如何启动 ipython 运行脚本?
【发布时间】:2011-03-20 09:21:21
【问题描述】:

我的用例是我想在一个文件中初始化一些函数,然后用定义的这些函数启动 ipython。有没有办法做这样的事情?

ipython --run_script=myscript.py

【问题讨论】:

    标签: python ipython


    【解决方案1】:

    在 ipython 的最新版本中,您确实需要添加 -i 选项才能进入交互式环境。如果没有-i,它只会运行 myfile.py 中的代码并返回到提示符。

    $ ipython -i myfile.py
    

    【讨论】:

    • 作为附加说明,这里的“最新版本”是指在 0.10.2 ~> 0.11 架构改造之后,并且“-i”选项向后兼容 ipython 0.10.2(我可以确认)并且可能更低(我可以推测)。
    【解决方案2】:

    根据the docs,这是微不足道的:

    您使用以下命令启动 IPython:

    $ ipython [options] files
    

    如果在没有选项的情况下调用,它 执行中列出的所有文件 序列并将您放入 口译员,同时仍然承认 您可能在您的 ipythonrc 文件。这种行为是 与标准 Python 不同,后者 当被称为python -i 时,只会 执行一个文件并忽略您的 配置设置。

    所以,只需使用 ipython myfile.py... 就可以了!-)

    【讨论】:

    • 这个答案现在已经过时了。请参阅下面的@Maarten 的回答。您需要使用 -i 标志以及所需的任何其他选项,然后是 python 脚本名称。这样,您将被留在解释器中,而不是立即退出
    【解决方案3】:

    您可以使用 ipython 配置文件来定义每次启动 ipython 时都会运行的启动脚本。配置文件的完整描述,提供here。您可以使用不同的启动文件创建多个配置文件。

    假设您只需要一个配置文件,并且每次启动 ipython 时总是想要相同的启动文件,您可以简单地修改默认配置文件。为此,首先找出您的 ipython 配置目录在 ipython 会话中的位置。:

    In [1]: import IPython
    In [2]: IPython.paths.get_ipython_dir() # As of IPython v4.0
    In [3]: print(ipython_config_dir)
    /home/johndoe/.config/ipython
    

    对于这个例子,我使用的是 Ubuntu Linux,配置目录在/home/johndoe/.config/ipython,其中johndoe 是用户名。

    default_profile 位于profile_default 子目录中。将任何启动脚本放入profile_default/startup。在此处的示例中,完整路径为/home/johndoe/.config/ipython/profile_default/startup

    【讨论】:

    • 我不知道它是否是最近添加的,但定位给定配置文件的路径是由IPython.paths.locate_profile()完成的
    【解决方案4】:

    现在,您可以使用 ipython 的启动文件夹,该文件夹位于您的主目录(Windows 上为 C:\users\[username]\.ipython)。进入默认配置文件,您将看到一个带有 README 文件的启动文件夹。只需将任何 Python 脚本放在那里,或者如果您想要 ipython 命令,请将它们放在扩展名为 .ipy 的文件中。

    【讨论】:

    • 谢谢,很高兴知道启动目录。我最近在配置文件选项中发现了关于 exec_files 的信息。似乎启动目录文件在 exec_files 条目之前执行。该链接内容丰富。
    • ~/.config/ipython/profile_default/startup 在 ubuntu 上
    【解决方案5】:

    以下是您希望在使用 ipython 时自动运行启动脚本(而不是每次运行 ipython 时都必须指定脚本)的情况。

    对于 ipython 的最新版本(即 5.1.0),将一个或多个您希望执行的 Python 脚本放在 IPYTHON_CONFIG_DIR/profile_PROFILENAME/startup 文件夹中。

    例如,在 linux 上,如果您希望它在未指定 ipython 配置文件时运行,您可以将您的 python 启动代码放入名为 ~/.ipython/profile_default/startup/10-mystartupstuff.py 的文件中。

    有关创建和使用 ipython 配置文件的信息可在 here 获得。

    【讨论】:

      【解决方案6】:

      你似乎在寻找 ipyhton 的 %run 魔法命令。

      通过输入 ipython:

          %run hello_world.py
      

      您将运行保存在您的主目录中的 hello.py 程序。您也可以访问该脚本中定义的函数和变量。

      【讨论】:

      • 问题是如何用文件启动ipython,而不是在ipython中运行文件。
      【解决方案7】:

      在 Ubuntu 14.04 中更新@Caleb 对 Python 3.5 的回答:通过复制 @Caleb 回答的相关部分使这个答案自包含。

      您可以使用 ipython 配置文件来定义每次启动 ipython 时都会运行的启动脚本。配置文件的完整描述,提供here。您可以使用不同的启动文件创建多个配置文件。

      假设您只需要一个配置文件,并且每次启动 ipython 时总是想要相同的启动文件,您可以简单地修改默认配置文件。为此,首先找出您的 ipython 配置目录在 ipython 会话中的位置。:

      输入:

      import IPython
      ipython_config_dir = IPython.paths.get_ipython_dir()
      print(ipython_cofig_dir)
      

      输出:

      /home/johndoe/.ipython
      

      对于此示例,johndoe 是用户名。

      /.ipython 文件夹中,default_profile 位于profile_default 子目录中。将任何启动脚本放在 profile_default/startup 中。在此处的示例中,完整路径将是

      /home/johndoe/.ipython/profile_default/startup 
      

      【讨论】:

      • 因为这个答案没有回答问题。答案必须完全包含在其自身中。我建议完成它。
      • 我应该只编辑@Calebs 的答案吗?有了这个更新!还是让它自给自足?谢谢!不过已经编辑过了!
      • 我认为您不应该修改 Calebs 的答案,因为它会大大改变它。我会添加相关信息以使您的答案自行回答问题。将自己置于阅读您的答案而不阅读 Calebs 的人的位置,并查看该人需要哪些信息才能从头到尾遵循您的答案。 :)
      猜你喜欢
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      相关资源
      最近更新 更多