当前位置: 首页 > 知识库问答 >
问题:

如何从python文件运行bash脚本?[重复]

吴凯
2023-03-14

我想从python脚本内部运行下面的bash脚本。

condo activate bne
CUDA_VISIBLE_DEVICES=1 python bne.py --model models/BNE_SGsc --fe ./embeddings/BioEmb/Emb_SGsc.txt --fi names.txt --fo output_BNE_SGsc.txt

我的python脚本/函数如下所示

def do_tensorflow_routine(path_name_file):
    os.chdir(os.path.join("../","bne_resources/"))
    os.system("conda activate bne")
    bne_command = "python bne.py --model models/BNE_SGsc --fe ./embeddings/BioEmb/Emb_SGsc.txt --fi names.txt --fo names_bne_SGsc.txt"
    subprocess.run(bne_command,shell=True)
    pass

但是,我收到以下错误 -

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

我正在使用集群,我的系统规格如下 -

   Static hostname: lab1
         Icon name: computer-server
           Chassis: server
        Machine ID: 104265a0ea5b48c1a3c5a9802294af66
           Boot ID: 4277780744ae448292d66a9ff39c76e2
  Operating System: Ubuntu 20.04.1 LTS
            Kernel: Linux 5.8.0-36-generic
      Architecture: x86-64

如果我遗漏了什么,请告诉我。我的基本问题是如何从给定的python脚本运行另一个python script,特别是当我们需要激活和停用虚拟环境时,因为由于一些依赖冲突,父python script和子python cript需要两个不同的虚拟环境。请帮帮我。提前谢谢,梅格

共有1个答案

太叔睿
2023-03-14

如果终端在运行 conda 激活 bne 后未显示(基站),请尝试运行:

< code>conda init

在顶部的 bash 脚本中,你需要舍邦行 #!/usr/bin/env bash 和 env 用于不同 Linux 发行版的可移植性。

 类似资料:
  • 问题内容: 我的以下代码有问题: callBash.py: sleep.sh: 我希望10秒钟后打印“结束”。(我知道这是一个愚蠢的示例,我可以简单地在python中睡眠,但是这个简单的sleep.sh文件只是作为测试) 问题答案: 使sleep.sh可执行并添加到参数列表中(如先前答案中所建议)可以正常工作。根据搜索路径,您可能还需要添加或其他合适的路径。(即,更改为。) 如果bash脚本的第一

  • 问题内容: Bash脚本非常有用,可以节省很多编程时间。那么,如何在C ++程序中启动bash脚本呢?另外,如果您知道如何使用户成为超级用户,那也会很好。谢谢! 问题答案: 使用功能。

  • 问题内容: 之前曾在不同程度上提出过这样的问题,但我觉得还没有以简明的方式回答,因此我再次提出。 我想在Python中运行脚本。可以说是这样的: 它获取文件位置,读取它,然后打印其内容。没那么复杂。 好吧,那我该如何在C#中运行它呢? 这就是我现在所拥有的: 当我传递位置和位置无效时。有人告诉我,我应该通过的,然后作为。 我已经寻找了一段时间,只能找到建议使用IronPython或类似工具的人。但

  • 我写了一个简单的脚本,将具有单个值的列添加到现有文件中,我想为位于一个文件夹中的其他几个文件运行它,知道我该怎么做吗? python脚本如下所示:

  • 问题内容: 如何在 根用户 (具有所有权限)而不是 没人 用户(php默认用户)下从PHP运行bash脚本? 在sudo visudo之后,多数民众赞成在我的输出: 问题答案: 您可以使用sudo: 您应该允许在没有密码提示的情况下执行脚本。在控制台中运行,并将以下字符串添加到末尾: 您必须正确设置文件模式,以确保没有人可以修改此脚本并将危险内容放入该脚本(在根控制台中):

  • 我有一个脚本,它需要两个每次都不相同的输入。所以我必须在每次运行脚本时手动输入。我确实想把这个脚本部署到Heroku。但遗憾的是,我无法在heroku:worker中手动给出任何种类的输入。我不能使用任何环境变量,参数,因为这两个输入不是静态的。所以heroku:worker总是得到“没有输入”的错误。 所以我决定用命令< code > heroku run python 3 main . py