【问题标题】:python: How to install virtualenv without internet connectionpython:如何在没有互联网连接的情况下安装 virtualenv
【发布时间】:2019-02-06 17:28:02
【问题描述】:

我正在为某人度假,而我是 python 新手。我被要求在虚拟环境中安装几个包。最大的问题是服务器不能在公共网络上,所以我将在不同的服务器上下载软件并将其复制到研究人员将工作的服务器上。

我在Install Virtualenv without internet connectivity 找到了另一个线程“在没有互联网连接的情况下安装 Virtualenv”,但这不适合我所处的情况 - 看起来他们可以从网络上的服务器开始完成安装并想要将该 virtualenv 共享给可能没有 Internet 连接的实验室环境中的其他系统。

python: How to create virtualenv without internet connection 的另一个主题“python:如何在没有 Internet 连接的情况下创建 virtualenv”类似,但看起来他们已经安装了 virtualenv。我没有找到这里安装的 virtualenv。

此 Windows Server 2016 系统已锁定,我无法复制和粘贴我运行的命令以提供以下信息,因此请原谅仓促编写的消息中的任何拼写错误。我找到了安装的python版本:

python --version
Python 3.6.2rc1

我找不到要下载的 virtualenv 安装程序。我是否需要再次下载 Python 安装程序,重新运行它并选择其他选项?

感谢您提供的任何帮助。

编辑添加:

根据反馈,我将命令(在管理命令窗口中)更改为 python -m venv [path] 并且我已经能够取得一些进展。

我有能力下载 gz、whl 或其他文件并将它们移动到此服务器以在那里运行它们,但是此服务器无法联机以直接下载安装程序,也无法连接到 repo 以下载依赖项。我无法在具有连接性的不同机器上设置环境并在不违反安全要求的情况下共享它。感谢您提供指向 Python 包离线安装线程的链接 - 我认为我过于专注于虚拟环境,以至于错过了那篇文章。

【问题讨论】:

  • 如果您没有互联网连接并且无法访问机器的文件系统,您希望如何检索所需的包?
  • 命令是python -m venv。获取所需的软件包仍然是个问题,但这是常见的常见问题解答。
  • 鉴于安装任何 Python 包都可能需要下载传递依赖项,我不确定您是否能比在具有连接性并共享它的机器上准备安装环境更好。您能否提供更多详细信息,说明您的问题与您链接的问题之间到底有什么不同?也许概述事件的顺序 - 您希望在连接的机器上下载什么,以及哪些命令应该在没有连接的机器上运行?

标签: python virtualenv


【解决方案1】:

您使用的是 Python 3.6,这意味着包含 venv 并且可以在必要时引导 pip。创建 venv 不需要互联网访问:

python3 -m venv .venv --prompt=myvenv

安装pip不需要上网:

python3 -m ensurepip 

从本地文件安装包不需要互联网访问:

python3 -m pip install --no-index --disable-pip-version-check ./mydist.tar.gz

如果您要安装多个包(例如,如果mydist 具有依赖项),您可以指定一个本地目录作为您的--index-url,而不是默认为 PyPI 的索引。

here 涵盖了针对使用旧版本 Python 的人们的解决方案。

【讨论】:

  • 谢谢。我会试一试的。
  • 这是不正确的。 python -m venv ... 将尝试升级 pip,如果失败,它将直接退出而不创建环境。使用 --without-pip 时,您现在有一个没有 setuptools 或 pip 的 venv,现在卡住了。
  • @Rebs 不,它不会尝试升级 pip。它将使用 Python 中包含的bundled pip wheel。我一直在创建离线 venvs 而没有互联网访问,它工作得很好。
  • anaconda/py 3.6 对我来说绝对是失败的。也许是因为我可以访问互联网但它的防火墙像疯了一样?我不得不做 --without-pip 然后 python setup 。 setuptools 和 pip 让它工作。
  • @Rebs 防火墙与它没有任何关系,因为 Python 源代码中没有任何东西首先可以访问互联网。 venv 模块calls ensurepip in a subprocessensurepip 使用捆绑的轮子additionally passing --no-index which prevents accessing PyPI。我不使用 Anaconda,也许他们以某种方式修改了 stdlib 脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多