pip将新的Python包安装到所有现有的virtualenv

2024-05-29 02:09:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pip安装一个新的Python包。我想用一个命令在我当前的所有虚拟环境中安装这个包。这可能吗?如果可能,我该怎么做?你知道吗

目前,当我想在虚拟环境中安装一个新的Python包“xyz”时,我激活该venv,然后在命令行中使用标准的pip安装“xyz”。但是,这只会将其安装在当前激活的虚拟环境中。当然,这首先是虚拟环境的重要组成部分。你知道吗

如果我想在我所有的虚拟环境中安装软件包“xyz”,我必须为我的每个环境激活install deactivate。你知道吗

我希望避免这个安全但费力的过程,只需使用一个命令就可以将一个新包“xyz”安装到我当前的所有虚拟环境中。你知道吗

例如: 我列出现有的虚拟环境(在本地计算机上):

λconda env列表

康达环境:

基本*C:\ProgramData\Anaconda3 cntk C:\ProgramData\Anaconda3\envs\cntk fastai C:\ProgramData\Anaconda3\envs\fastai公司

我想在所有环境(base、cntk、fastai)中安装的软件包是pydicom。你知道吗

λ激活基

(底座)λpip安装pydicom

(基)λipython Python 3.7.3(默认值,2019年4月24日,15:29:51)[MSC v.1915 64位(AMD64)] 键入“copyright”、“credits”或“license”以获取详细信息 iPython7.5.0——增强的交互式Python。键入“?”寻求帮助。你知道吗

在[1]中:导入pydicom 在[2]中:

(基)λconda

λ激活cntk

(cntk)λipython

Python 3.6.8 | Anaconda,Inc.|(默认值,2019年2月21日,18:30:04)[MSC v.1916 64位(AMD64)] 键入“copyright”、“credits”或“license”以获取详细信息 iPython7.4.0——增强的交互式Python。键入“?”寻求帮助。你知道吗

在[1]中:导入pydicom


ModuleNotFoundError回溯(最近一次调用) 在里面 ---->;1导入pydicom

ModuleNotFoundError:没有名为“pydicom”的模块

在[2]中:


这一切都很好,文夫正在做它的工作。你知道吗


λconda激活cntk

(cntk)λpip安装pydicom

收集pydicom 使用缓存的https://files.pythonhosted.org/packages/43/88/d3c419ab2e753e7651510882a53219373e78fb55294cb247dffd3934ea55/pydicom-1.2.2-py2.py3-none-any.whl 安装收集的包:pydicom 已成功安装pydicom-1.2.2

(cntk)λipython

Python 3.6.8 | Anaconda,Inc.|(默认值,2019年2月21日,18:30:04)[MSC v.1916 64位(AMD64)] 键入“copyright”、“credits”或“license”以获取详细信息 iPython7.4.0——增强的交互式Python。键入“?”寻求帮助。你知道吗

在[1]中:导入pydicom

在[2]中:


显然,这一次我在venv中安装了pydicom,它起了作用。你知道吗


理想情况下,会有如下命令: $pip安装--

或者

$pip安装--全部

安装到提供的venv或所有可用的venv列表中。你知道吗


我在考虑一些变通方法,比如使用$conda env list,然后解析输出。使用一个简单的脚本依次安装到每个列出的venv中。这条思路把我带到了我的子问题:

问:有没有可能在虚拟环境中安装一个Python包,而不首先激活那个venv?你知道吗


我怀疑有一个简单的单行线解决方案(尽管那将是伟大的),所以建议的变通办法是受欢迎的。你知道吗

如果我的意图是自动将一个新的Python包安装到所有的venv中,这与最佳实践不一致,那么也欢迎您提出警告。你知道吗


Tags: pip命令键入环境venvipython虚拟环境conda
2条回答

我使用,它有一个命令allvirtualenv,所以我可以运行

allvirtualenv pip install -U pip setuptools

我甚至更新了~/.tox中由创建的所有虚拟环境。我的整个脚本run-all-venv

#! /usr/bin/env bash

eval "$@"

if source virtualenvwrapper.sh; then
   allvirtualenv eval "$@"

   for tox_envs in ~/.tox/*; do
      if [[ "$tox_envs" = */.tox/\* ]]; then
         exit 0
      fi
      WORKON_HOME="$tox_envs" allvirtualenv eval "$@"
   done
fi

我把它当作

run-all-venv pip install -U pip setuptools

“激活”并不神奇,它只是将virtualenv可执行文件的位置预先添加到您的路径中,并更改您的提示。如果您想在不激活的情况下将某个内容安装到virtualenv中,您只需执行以下操作:

/path/to/virtualenv/bin/pip install foo

至于安装到所有的虚拟环境,我不认为有任何自动的方法来做到这一点,特别是因为环境可以生活在任何地方,所以你需要一种方法来发现他们以及。但是如果您愿意,可以很容易地将上面的命令与env位置列表结合起来。你知道吗

相关问题 更多 >

    热门问题