使用 setup.py setuptools 安装到 venv
Installing into a venv with setup.py setuptools
我正在寻找一种方法,通过特定路径将整个 python 应用程序安装到 venv
中。
我对这个主题做了一些研究,特别是在 this thread there was a discussion about Makefile
automation of the process. It also suggests to use pyinvoke 中,在我看来它是包裹在 python 中的命令行命令。所以我目前写了以下简单的膝上 shell 脚本:
install_venv.sh
#!/bin/bash
PYTHON=""
VENV_PATH=""
SOURCE_ROOT="$(dirname "$(readlink -f "$BASH_SOURCE")")"
echo "$PYTHON"
echo "$VENV_PATH"
echo "$SOURCE_ROOT"
cd $SOURCE_ROOT
$PYTHON -m venv $VENV_PATH
source "$VENV_PATH/bin/activate"
python -m pip install -r "$SOURCE_ROOT/requirements.txt"
python setup.py install
这个脚本可以是运行,比如说./install_venv.sh python3.7 /tmp/test_venv
。它不处理 venv
已经存在的情况,但可以直接扩展。
这看起来是一个很常见的任务,所以也许 setuptools
已经有办法做到这一点,或者仍然需要编写这样的脚本?或者什么是首选方式?
不太确定真实意图是什么...
也许这些工具之一可以提供帮助:
- https://pypi.org/project/zapp/
- https://pypi.org/project/shiv/
- https://pypi.org/project/pex/
- https://pypi.org/project/pipx/
这些工具允许您以隔离的方式安装 Python 应用程序及其所有必需的依赖项。有些基于虚拟环境,有些则不是。
也许您正在寻找 poetry (or pipenv 之类的工具,但不确定它是否仍在维护。
更简单明了,setuptools有这个插件:
我正在寻找一种方法,通过特定路径将整个 python 应用程序安装到 venv
中。
我对这个主题做了一些研究,特别是在 this thread there was a discussion about Makefile
automation of the process. It also suggests to use pyinvoke 中,在我看来它是包裹在 python 中的命令行命令。所以我目前写了以下简单的膝上 shell 脚本:
install_venv.sh
#!/bin/bash
PYTHON=""
VENV_PATH=""
SOURCE_ROOT="$(dirname "$(readlink -f "$BASH_SOURCE")")"
echo "$PYTHON"
echo "$VENV_PATH"
echo "$SOURCE_ROOT"
cd $SOURCE_ROOT
$PYTHON -m venv $VENV_PATH
source "$VENV_PATH/bin/activate"
python -m pip install -r "$SOURCE_ROOT/requirements.txt"
python setup.py install
这个脚本可以是运行,比如说./install_venv.sh python3.7 /tmp/test_venv
。它不处理 venv
已经存在的情况,但可以直接扩展。
这看起来是一个很常见的任务,所以也许 setuptools
已经有办法做到这一点,或者仍然需要编写这样的脚本?或者什么是首选方式?
不太确定真实意图是什么...
也许这些工具之一可以提供帮助:
- https://pypi.org/project/zapp/
- https://pypi.org/project/shiv/
- https://pypi.org/project/pex/
- https://pypi.org/project/pipx/
这些工具允许您以隔离的方式安装 Python 应用程序及其所有必需的依赖项。有些基于虚拟环境,有些则不是。
也许您正在寻找 poetry (or pipenv 之类的工具,但不确定它是否仍在维护。
更简单明了,setuptools有这个插件: