【问题标题】:Force python installation into virtualenv强制 python 安装到 virtualenv
【发布时间】:2018-06-10 15:29:16
【问题描述】:

我有一个大型 python 模块,它在依赖关系方面特别复杂,并且在 Raspberry Pi 上它现在与几个核心模块(枕头、pyserial 和其他一些)冲突,这些模块不容易被覆盖。一般来说,安装到 virtualenv 中是最好的。但我发现这有点超出了一些用户的范围,因为大多数用户只会使用安装的 CLI 命令而不是模块 API,所以我想让事情自动化。是否有可能以任何方式使用 setuptools 执行以下操作?

  • virtualenv 不可用时自动安装
  • 将模块安装到 virtualenv 中
  • 将需要的依赖项安装到 virtualenv 中
  • 将 CLI 命令设置为从该 virtualenv 自动运行而无需先激活它

【问题讨论】:

  • 如果您打算使用pip 安装软件包,那么没有办法这样做。如果您不反对 RPM 或 deb 包 - 我知道 rpmvenv 可以创建包含虚拟环境的 RPM 包,而 fpm can bundle existing environments,因此您在系统包旁边安装了一堆 python 包。 AFAIK,它可以构建很多格式,包括 RPM 和 deb。通过pip install rpmvenvgem install fpm 安装(它是一个Ruby 工具)。
  • 有趣但似乎不支持 Windows,这是一个要求。虽然也许还有另一个 python 打包工具可以做类似的事情。我很想保持点子支持,但如果不是世界末日的话。
  • 嗯,考虑到 Windows,我还会查看使用 pyinstaller/cxFreeze 等构建的独立安装程序,但是,我对这些的经验很少。在我看来,最好的 Windows 选项是使用 NSIS 编写独立的安装程序。在安装脚本中,您可以创建一个全新的虚拟环境,在 env 中安装软件包及其依赖项并调整 PATH 以便安装的可执行文件可用。不幸的是,标准的打包工具 (distutils/setuptools) 根本不够强大。

标签: python virtualenv setuptools


【解决方案1】:

为此,我在脚本目录中创建了两个脚本。

创建 venv:

#!/bin/bash
cd ..
virtualenv -p python3 --no-site-packages venv
cd script
sh updateEnv.sh

更新 venv(基于 requirements.txt 文件):

#!/bin/bash
cd ..
echo "activating env"
. venv/bin/activate
pip install --upgrade -r requirements/requirements.txt

您只需要添加一个检查是否已经创建了 venv 文件夹。 您只需要安装 virtualenv。

【讨论】:

    猜你喜欢
    • 2019-04-04
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2015-01-05
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多