【问题标题】:How can I install a package using easy_install from a package on the local host?如何使用本地主机上的包中的 easy_install 安装包?
【发布时间】:2016-12-22 06:18:09
【问题描述】:

我正在尝试使用 easy_install 从本地目录安装 Python 包。

我这样做的原因是网络/IT 问题。

我有一个工作站 (Ubuntu),可以访问 Internet 上的 easy_install 存储库。我可以毫无问题地安装东西。

我们有一个与 Internet 隔离的实验室网络。我在这个实验室网络上有一个 Ubuntu 虚拟机。我不能使用easy_install(或pip)来安装任何东西,因为它被存储库阻止了。我需要安装一些 Python 包,所以我需要解决这个限制。

我解决 pip 限制的方法是对包进行“pip 下载”,然后将包文件 SCP 到实验室网络中的 VM 并执行包文件的“pip 安装”。

我正在尝试使用 easy_install 来完成此操作。我可以通过发出这个命令来下载 easy_install 包

    > easy_install -q --editable --build-directory . <package name>

例如,假设我想使用 easy_install 安装 pip。通过easy_install下载源代码后,我有了pip目录。我可以将 pip 目录 tar 并将其 SCP 传送到 VM。有没有办法告诉 VM 上的 easy_install 使用 pip 目录中的文件进行安装,而不是尝试通过外部存储库安装?

我已经使用 easy_install 标签搜索了与此类似的问题,但我没有看到任何内容,所以我想问一下。

【问题讨论】:

  • 它可能有效,但您需要一个一个下载每个依赖项。我建议找到另一种解决方案。
  • 一个选项可能是通过 SSH 隧道连接到 pypi,查看 -D-R 选项的手册页。

标签: python easy-install


【解决方案1】:

devpi-server 是一个缓存 PyPI 代理。如果您使用它在一台主机上安装软件包,它会将请求转发到https://pypi.python.org/pypi,并保存下载的所有内容。然后将~/.devpi 的压缩包复制到另一台主机,启动服务器,并让devpi-server 提供缓存文件。

主持人 1(在线):

$ easy_install --user devpi-server
$ devpi-server --start
$ easy_install --user -i http://localhost:3141/root/pypi/ Django

~/.devpi从主机1复制到主机2

不知何故,您还需要将devpi-server 复制到离线框。它有很多依赖项。也许为了引导你可以创建一个基本的虚拟机,运行easy_install --user devpi-server,然后将~/.local tar 并复制过来?

主机 2(没有互联网):

$ devpi-server --start
$ easy_install --user -i http://localhost:3141/root/pypi/ Django
# Success!

【讨论】:

  • andrewdotn,我发出了您为主机 1 列出的 3 个命令。当我发出第三个命令时,使用不同的目录位置:"$ easy_install --user -i localhost:3141/root/tools/devpi pip" ... easy_install 而是在 /root/.local/bin 安装了 pip。 localhost后面指定的目录位置是不是你要放置安装的位置?
  • @SQA777 通常你从互联网上安装python包到~/.local。此设置在~/tools/devpi 的中间添加了一个缓存。安装文件将从 Internet 下载到一台机器上的 ~/tools/devpi,然后您可以从该安装文件缓存中将软件包安装到一台无法访问 Internet 的机器上的 ~/local
猜你喜欢
  • 2015-02-06
  • 2013-04-16
  • 1970-01-01
  • 2013-09-22
  • 2010-11-16
  • 2014-07-22
  • 2012-12-07
  • 1970-01-01
相关资源
最近更新 更多