Python 子进程创建 conda 环境可能没有 shell = true



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

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

然后使用 shell = True 使用其他 suprocess 调用运行我的脚本。

但是,我只读过有关使用shell = True的"负面"内容,尤其是安全原因(例如:子进程中"shell=True"的实际含义)。所以我想知道是否有其他选择可以做到这一点,如果没有,在私人内部服务器上运行它时是否有安全原因?

还有另外两个选项:1 是解决方法,2 是 conda 4.6 中可用的最终解决方案。

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

  2. 康达奔跑在 conda github 页面上,关于在环境中执行命令的标准和快速方法进行了长时间的讨论,导致了新命令的实现(实际上是以前可用的重新调用): conda run

它在问题 #7320 中有描述,预计将在 2018 年 10 月在 conda-4.6 中发布!

最新更新