【问题标题】:Python subprocess creating conda environment possible without shell = true?Python 子进程可以在没有 shell = true 的情况下创建 conda 环境?
【发布时间】:2018-03-22 09:24:42
【问题描述】:

我需要使用 conda 环境来执行 python 文件(因为缺少服务器管理员设置的权限和约束)。所以目前我做了以下激活环境:

subprocess.check_output('source activate rgi_run', shell=True)

然后使用 shell = True 使用另一个 suprocess 调用运行我的脚本。

但是,我只阅读了有关使用 shell = True 的“负面”信息,尤其是安全原因(例如:Actual meaning of 'shell=True' in subprocess)。所以我想知道是否还有其他选择可以做到这一点,如果没有,在私有内部服务器上运行它时是否存在安全原因?

【问题讨论】:

标签: linux shell security subprocess


【解决方案1】:

还有其他两个选项:1 是一种解决方法,2 将是 conda 4.6 中可用的最终解决方案。

  1. conda 包装器 Guilherme Melo 在 conda 环境中为 python 可执行文件创建了一个包装器。如果您在 IDE 中将其设置为 python 解释器,例如PyCharm,它将激活调用它的 conda 环境,然后调用 python 解释器。 在“创建 conda 包装器”部分下查看此处: https://pypi.org/project/exec-wrappers/

  2. 康达运行 在a standard and fast way to execute a command inside an environment 上的 conda github 页面上进行了长时间的讨论,导致了一个新命令的实现(实际上是一个重新调用,因为它以前可用): conda run

它在issue #7320 中进行了描述,并有望在 2018 年 10 月在conda-4.6 中发布!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多