我可以将 python virtualenv 站点包从一台机器“提取”到另一台机器以避免使用 pip 吗?

问题描述 投票:0回答:1

我希望在不同的 Linux 机器上创建 python 虚拟环境,这些机器安装了

python-venv
模块,但没有 pip,也无法访问互联网。

我的想法是使用

python3 -m venv --without-pip my-venv-name
for python3 或
python -m virtualenv --no-pip my-venv-name
for python 2.7 创建 python virtual-env,这将生成一个空的虚拟环境,我的问题是我是否使用相同的 python 主要和次要,并复制粘贴来自预先准备好的相同 python 主要和次要虚拟环境的站点包并期望一切正常工作?

值得一提的是,这些软件包将使用相同的 platform_tags 安装在原始 python-virtualenv 中。

python python-3.x pip virtualenv python-venv
1个回答
0
投票

更可靠的方法是下载填充虚拟环境所需的 dist 文件,并使用另一台计算机上的 dist 文件从头开始重新创建它。示例:假设您有一个

requirements.txt
以及您需要的依赖项:

# requirements.txt
requests==2.32.3  # etc

在第一台有互联网的机器上:

$ mkdir dist
$ pip download pip -r requirements.txt --dest dist

您现在已经下载了

pip
的 dist 文件和您的项目需求。将
dist
目录内容复制到没有互联网的另一台计算机上。现在在这台机器上运行:

$ python -m venv --without-pip my-venv-name
$ source my-venv-name/bin/activate
(my-venv-name) $ python dist/pip-24.2-py3-none-any.whl/pip install \
  -r requirements.txt \
  --no-index \
  --find-links=dist \
  --disable-pip-version-check

这会起作用,因为:

  1. 无需安装
    pip
    ,只需使用
    pip
    的distwheel中的脚本就足够了。
  2. 不需要互联网,因为
    --no-index
    会指示
    pip
    忽略 PyPI,而
    --find-links=dist
    会告诉
    pip
    从哪里搜索要安装的软件包。
    --disable-pip-version-check
    是可选的,将加快安装速度,因为
    pip
    不会尝试访问互联网进行自我更新检查。
© www.soinside.com 2019 - 2024. All rights reserved.