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

时间:2015-06-15 09:12:22

标签: pycharm

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

4 个答案:

答案 0 :(得分:19)

如果您想在PyCharm中看到此类功能,请对IDEA-112256 'Command Line' Run Configuration功能请求进行投票。

Pycharm的在线帮助的

Run/Debug Configurations部分列出了所有支持的运行/调试配置类型,并且确实不支持shell脚本。 但是,您可以通过安装插件来添加此类支持。例如,如果您对bash脚本感兴趣,可以使用BashSupport插件添加对运行/调试配置中运行shell脚本的支持。

来自插件'主页:

  

BashSupports可以直接在IntelliJ中运行脚本。你可以创建   Bash脚本的新运行配置。在这里你可以设置哪个   解释器用于运行它。每当脚本执行时   记录输出。如果Bash打印出语法错误,那么错误   可以单击这些行以跳转到错误的位置。

对于Windows,CmdSupport插件提供了运行 .cmd 脚本的操作。但它似乎不支持运行诸如Run / Debug配置之类的脚本。

作为一种解决方法,您可以使用Python运行/调试配置,指定一些虚拟(空)Python文件运行并使用启动前选项指定外部工具并指定路径添加/配置此外部工具时添加到脚本。有关详细信息,请参阅In IntelliJ IDEA, how can I create a key binding that executes a shell script with the current file as a parameter?

由于PyCharm基于IntelliJ的IDEA平台,问题IntelliJ IDEA: Running a shell script as a Run/Debug Configuration非常相关。

说到运行/调试配置,您可能会对插件Run Configuration as Action感兴趣

  

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

答案 1 :(得分:4)

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

  1. 首先,我尝试创建标准(空)Python配置并使用"在启动之前" - >外部工具选项,因此您必须使用工具设置创建新的外部工具定义:

    • 程序:cmd.exe
    • 参数:/ C your-batch-file.bat
    • 工作目录$ ProjectFileDir $(在我的情况下,$ ProjectPath $为空)

    这个解决方案令人讨厌的是,"外部工具"标准输出被重定向到控制台日志窗口中的一个额外选项卡,当后面执行虚拟Python配置时,它会立即进入后台。

  2. 第二个也是更好的是使用python来执行命令。通常我总是使用子进程模块,但在这种情况下,os.system()是一个很好的最小解决方案。然后python运行配置看起来像这样
    • 脚本:(空)
    • 参数:-c" import os;使用os.system('您的分批文件')"
    • 工作目录:(选择项目目录,遗憾的是这里没有宏)

答案 2 :(得分:2)

我认为最简单的方法是编写一个调用.bat文件的python脚本,然后运行它:

from subprocess import Popen

p = Popen("batch.bat", cwd=r"C:\Path\to\batchfolder")
stdout, stderr = p.communicate()

答案 3 :(得分: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>
  <additional />
</jdk>

在那之后,只需为您的项目选择您的解释器,您就可以使用此shell作为您的解释器。在docker映像中使用解释器时,我使用了此解决方案。