添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

如何在PyCharm运行配置中运行一个shell脚本而不是python?

33 人关注

我试图将PyCharm设置为调用一个shell脚本,而不是python,作为运行选项。这可能吗?在默认选项中,我只有Python、Python文档和Python测试。在专业版中,我也有Django和其他。然而,在一个组合框中,它们都把Python作为解释器,而且就我所见,它们不能被改变。

2 个评论
我从来没有找到一种方法来获得内置的启动配置,但你可以在pycharm窗口中打开一个终端,在那里运行任何命令。这能行吗?
@trengot:不是的。当然,我可以写一个Python包装脚本,或者干脆使用布料,但这更像是一个问题,以了解我是否遗漏了什么。
pycharm
Stefano Borini
Stefano Borini
发布于 2015-06-15
4 个回答
Piotr Dobrogost
Piotr Dobrogost
发布于 2018-07-07
已采纳
0 人赞同

如果你想在PyCharm中看到这样的功能,请投票给 IDEA-112256 '命令行'运行配置 功能请求。

运行/调试配置 Pycharm的在线帮助部分列出了所有支持的运行/调试配置类型,但确实没有对shell脚本的支持。 不过,你也许可以通过安装一个插件来增加这种支持。例如,如果你对bash脚本感兴趣,可以使用 BashSupport 插件,增加了对在运行/调试配置中运行shell脚本的支持。

从插件的主页。

BashSupports可以直接在IntelliJ中运行脚本。你可以创建 一个新的Bash脚本的运行配置。在这里你可以设置哪个 解释器来运行它。每当一个脚本被执行,其 输出都会被记录下来。如果Bash打印出了语法错误,那么有错误的 行可以点击跳转到错误的位置。

For Windows there's CmdSupport 插件,它提供了一个行动来运行 .cmd 脚本。然而,它似乎不支持以运行/调试配置的方式运行此类脚本。

作为一种变通方法,你可以使用Python运行/调试配置,指定一些假的(空的)Python文件来运行和使用 发射前 option specifying 外部工具 并在添加/配置这个外部工具时指定该脚本的路径。参见 在IntelliJ IDEA中,我如何创建一个键绑定,以当前文件为参数执行一个shell脚本? 详情请见下文。

由于PyCharm是基于IntelliJ的IDEA平台,所以问题在于 IntelliJ IDEA。将 shell 脚本作为运行/调试配置来运行 是非常相关的。

说到运行/调试配置,你可能对这个插件感兴趣 以行动方式运行配置 which

(...)提供了一种方法来使用运行配置作为工具栏上的按钮。 或者指定快捷键来执行特定的运行配置。

不幸的是,它与最新的PyCharm不兼容。
这个工作很好,@DataGreed: 我测试了,它与PyCharm 2016.1.2兼容 #Build PY-145.844
user6316071
user6316071
发布于 2018-07-07
0 人赞同

这确实是一个缺失的功能,通常应被视为基本功能。有两个选项

  • First i tried to create a standard (empty) Python configuration and used the "Before launch"->External tool option, therefore you must create a new external tool definition with Tool Settings:

  • Program: cmd.exe
  • Parameters: /C your-batch-file.bat
  • Working directory $ProjectFileDir$ (In my case $ProjectPath$ was empty)
  • 这个解决方案的恼人之处在于,"外部工具 "的标准输出被重定向到控制台日志窗口中的一个额外的标签,当假的Python配置被执行后,它立即进入后台。

  • Second and better is to use python to execute the command. Normally i always use subprocess module but in this case os.system() is the nice and minimal solution. The python run configuration then looks like this
  • Script: (empty)
  • Parameters: -c "import os; os.system('your-batch-file')"
  • Working directory: (select project directory, unfortunately no macros here)
  • 关于第二种方法的评论。我不得不在 "解释器选项 "中加入这一行,而不是 "参数"。现在我可以运行代码了,但我不能对它进行断点。如果有一个解决方案能让你调试由批处理文件调用的python代码,我会很高兴。
    S. Stromberg
    S. Stromberg
    发布于 2018-07-07
    0 人赞同

    我认为最简单的方法是直接写一个调用.bat文件的python脚本,然后运行该脚本。

    from subprocess import Popen
    p = Popen("batch.bat", cwd=r"C:\Path\to\batchfolder")
    stdout, stderr = p.communicate()
        
    如果这不起作用,请添加shell=True,见。 stackoverflow.com/questions/9935151/...
    jan-hybs
    jan-hybs
    发布于 2018-07-07
    0 人赞同

    另一个棘手的解决方案是改变PyCharm的配置文件夹中的 config/options/jdk.table.xml 文件。你可以简单地在你的 jdks 列表中添加另一个条目。

    <jdk version="2">
      <name value="Python 3.7 (docker)" />
      <type value="Python SDK" />
      <version value="Python 3.7.0" />
      <homePath value="/path/to/your/shell.sh" />
      <roots>
        <classPath>
          <root type="composite" />
        </classPath>
        <sourcePath>
          <root type="composite" />
        </sourcePath>
      </roots>