【问题标题】:How can I bring up a python shell with packages already imported with a python script?如何使用已经使用 python 脚本导入的包启动 python shell?
【发布时间】:2012-10-19 15:22:10
【问题描述】:

我想打开一个 python 窗口(可以是空闲的或基于 cmd 的),其中一些包已经通过双击 python 脚本导入。这可能吗?如果是这样,我该怎么做?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您可以使用 -i 解释器选项。 python -c "import os" -i 将导入 os 模块并进入解释器 read/eval 循环。

    您还可以将一些语句(导入、定义等)放在文件中并使用python -i <file.py> 加载它

    【讨论】:

    • Python 3.3 在 Windows 上添加了 shebang 支持。否则你可以单独安装pylauncher。然后只需在您的导入脚本中使用带有“-i”选项的 shebang,例如 #!python3 -i
    【解决方案2】:

    当然。你想要这样的东西:

    import sys
    import code
    
    preloaded_modules = dict(sys=sys)
    
    code.interact(local=preloaded_modules)
    

    当您将上述代码放入一个文件并运行它时,您会看到一个传统的 Python REPL(交互式解释器),除了 sys 模块已经被加载。您可以通过将更多模块导入您的脚本并将它们添加到 preloaded_modules 字典中来将更多模块添加到您的 REPL。

    代码模块还具有构建各种自定义解释器的工具。

    更多信息在这里:Python code module

    (注意:以上参考 Python 2.x,但在 3.x 中应该基本相同)

    【讨论】:

    • 字典中的key应该是什么,value应该是什么?
    • @esotericallyillin value 应该是你想要的模块,key 应该是你希望新 REPL 中的模块的名称
    【解决方案3】:

    也可以使用PYTHONSTARTUP环境变量

    from docs:

    PYTHONSTARTUP 如果这是一个可读文件的名称,Python 该文件中的命令在第一个提示符之前执行 以交互方式显示。该文件以相同的方式执行 执行交互式命令的命名空间,以便对象 在其中定义或导入的可以在没有限定条件的情况下使用 互动环节。您还可以更改提示 sys.ps1 和 sys.ps2 在这个文件中。

    如果想要在运行 python 时进行更剧烈的更改,例如一些初始化,您可以修改 site.py 或创建自己的 pth 文件

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 2022-01-06
      • 2020-08-20
      • 2018-10-15
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多