【问题标题】:How to autocomplete my python functions in bash?如何在 bash 中自动完成我的 python 函数?
【发布时间】:2021-03-14 11:05:56
【问题描述】:

我正在开发一个 HPC-Linux 集群,需要使用 python 函数和脚本对数据进行大量后期处理。 我当前的工作流程如下所示:

  1. cd 到我的数据所在的文件夹。预期的 Python 函数/脚本也保存在此文件夹中
  2. 做:python myfunction arg1 arg2
  3. 审核结果

由于这不允许我将 python 函数存储在一个位置,因此有时在调试时会变得非常烦人。

所以我想知道是否可以将我的函数存储在一个位置并在 python 命令之后自动完成它们而不声明它们的整个路径?

理想情况下应该是这样的:

python myfunction arg1 arg2

而不是

python path-to-function/myfunction arg1 arg2

我已经设法通过 $PYTHONPATH 在 python 交互中做到这一点,然后导入我的函数,但坦率地说,我不喜欢这个解决方案,因为它只是要输入几行。

我还设置了一个全局变量以进行如下操作:python $MYFUNCTIONS_PATH/myfunction arg1 arg2 但自动完成功能不起作用,而且还要额外输入。

这是我在这里的第一篇文章,我希望这个问题得到很好的理解。

【问题讨论】:

    标签: python bash shell path autocomplete


    【解决方案1】:

    我找到了一个适合我的问题并且更加舒适的解决方案。

    1. 在您的 python 脚本(Shebang)的第一行添加 python 作为执行器及其路径:

      #!/usr/bin/python

      如果您不确定您的 pyhton 路径,请执行以下操作:ẁhich python

    2. 将所有你想要的 python 脚本存储在一个合适的位置,并将这个位置添加到你的 PATH 中(例如在你的 .bashrc 中):

      PATH=$PATH:/path/to/your/python/scripts

    3. 使您在此位置的所有脚本都可执行:

      chmod +x

    在新登录或获取 your.bashrc 后,您现在应该可以使用自动完成功能从任何地方运行脚本,甚至不必在脚本名称前输入“python”:

    yourscript.py arg1 arg2

    另见here

    【讨论】:

      【解决方案2】:

      不确定,但我这样做是为了在 HPC 上链接进程:

      ls your/paths/of/interests/*/ > list.dat
      

      然后:

      #You process each of the element in your list
      cat list.dat | while read -r line; do
          #You cd to it
          cd ${line}/gromacs/
          #You use EOF to pass arguments
          gmx distance -f step7_all.xtc -oall DIST_D103_K81_${line}.xvg -n index.ndx - 
          select 'cog of group "r_103_&_OD1_OD2" plus cog of group "r_81_&_NZ"' <<EOF
          20
          EOF
          #You take your stuff away and cd back
          cp DIST*xvg ../../
          cd ../../
      

      【讨论】:

        猜你喜欢
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        • 2012-04-09
        相关资源
        最近更新 更多