如何离线安装软件包?

43 浏览
0 Comments

如何离线安装软件包?

如何从pypi下载Python软件包及其依赖,以便在另一台离线机器上进行安装?使用pip或easy_install有简单的方法吗?我想在一个未连接互联网的FreeBSD机器上安装requests库。

0
0 Comments

如何离线安装软件包?

问题的出现原因:

当需要在没有网络连接的环境下安装Python软件包时,无法直接通过pip或其他包管理工具进行安装。这时需要找到软件包及其依赖项的离线安装文件。

解决方法:

1. 如果软件包在PYPI上,可以将其及其依赖项下载到本地目录。可以使用以下命令创建并进入一个本地目录,然后将软件包下载到该目录中:

$ mkdir /pypi && cd /pypi

$ ls -la

-rw-r--r-- 1 pavel staff 237954 Apr 19 11:31 Flask-WTF-0.6.tar.gz

-rw-r--r-- 1 pavel staff 389741 Feb 22 17:10 Jinja2-2.6.tar.gz

-rw-r--r-- 1 pavel staff 70305 Apr 11 00:28 MySQL-python-1.2.3.tar.gz

-rw-r--r-- 1 pavel staff 2597214 Apr 10 18:26 SQLAlchemy-0.7.6.tar.gz

-rw-r--r-- 1 pavel staff 1108056 Feb 22 17:10 Werkzeug-0.8.2.tar.gz

-rw-r--r-- 1 pavel staff 488207 Apr 10 18:26 boto-2.3.0.tar.gz

-rw-r--r-- 1 pavel staff 490192 Apr 16 12:00 flask-0.9-dev-2a6c80a.tar.gz

2. 有些软件包可能需要手动将其归档成tarball格式。在某些情况下,如果需要更新

0
0 Comments

如何离线安装Python库?问题的出现原因是用户在按照指南操作时,使用pip install命令时出现了错误。解决方法是检查Python和pip的版本是否正确,并确保requirements.txt文件中指定的库的版本正确。

要离线安装Python库及其依赖项,请按照以下步骤在具有相同操作系统、已连接网络和已安装Python的机器上完成:

1)创建一个具有类似内容的requirements.txt文件(注意-这些是您希望下载的库):

Flask==0.12

requests>=2.7.0

scikit-learn==0.19.1

numpy==1.14.3

pandas==0.22.0

创建requirements文件的一种方法是使用pip freeze > requirements.txt命令。这将列出您环境中的所有库。然后您可以进入requirements.txt并删除不需要的库。

2)执行命令mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse,将库及其依赖项下载到目录wheelhouse中。

3)将requirements.txt复制到wheelhouse目录中。

4)使用tar -zcf wheelhouse.tar.gz wheelhouse命令将wheelhouse打包成wheelhouse.tar.gz文件。

然后将wheelhouse.tar.gz上传到目标机器:

1)执行tar -zxf wheelhouse.tar.gz命令以解压文件。

2)执行pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse命令以安装库及其依赖项。

但是,按照您的指示进行操作时,当我最后执行pip install时,它显示错误:ERROR: could not find a version that satisfies the requirement ..`

您的Python和pip版本是多少?

我找到了解决方法,问题是pip在我的requirements.txt中找不到pandas包的特定版本,因为我使用pip3安装了pandas 0.2

我也遇到了同样的问题。使用pip3时,我收到了相同的错误消息。也许它只适用于Python2。

这种工作流程的一个问题是不同的架构。如果在Mac上运行pip download命令,您将得到无法在Linux等上使用的*-macosx*.whl文件。

0
0 Comments

如何离线安装软件包?

有时候我们需要在没有网络连接的系统上安装软件包。以下是在有网络连接的系统上下载软件包,并在没有网络连接的系统上安装这些软件包的方法:

有网络连接的系统上:

使用pip的download命令可以下载软件包而不安装它们:

pip download -r requirements.txt

(在之前的pip版本中,这被称为pip install --download -r requirements.txt)

没有网络连接的系统上:

然后,您可以使用以下命令安装那些已下载的模块,而无需访问网络:

pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt

问题是这样安装的软件包可能还有其他依赖关系,而这些依赖关系不会被下载。

"Snake basket"(建立在pip之上)将下载依赖关系的依赖关系。

不是真的,"pip install --download"也会下载依赖关系,因此上述命令将正确工作,即使您的requirements还有其他依赖关系。Snake basket可能会做其他有用的事情(从未使用过它),但出于这个原因它绝对不是必需的。

pip install --download -r requirements.txt只下载requirements.txt中列出的依赖项,如果这些依赖项有其他要求,例如在setup.py中,pip将不会获取这些依赖项,而sb则添加了该功能。例如,如果一个项目需要sphinx,pip -d只会获取sphinx而不会获取jinja、pygments和docutils(这些是sphinx所需的)。只有在运行setup.py之后才会获取这些依赖项,但由于这是用于离线使用,您在运行setup.py时不会有一个可用的连接,因此安装将失败,并引用未满足的依赖项作为问题。

我明白你的意思,但我告诉你这是不正确的 🙂 您应该在发表相同的断言之前实际尝试一下。我刚刚在requirements.txt中放入了"pytest",运行"pip install --download . -r requirements.txt",它下载了pytest和它的setup.py依赖项"py"的sdists。

好吧,我会再试一次。我发誓我今天试过sphinx,而pip本身没有捕捉到sphinx的依赖项,只有在添加sb之后才下载了它们。我会进一步调查。

阅读了这篇文章后,我现在明白snakebasket只是强制pip检查每个下载的requirements.txt并下载所列出的内容。有些项目会在requirements.txt中列出它们的依赖项,并且该列表与setup.py中的依赖项不同。django-oscar是一个例子。

我认为这是更正确/简单的答案。它处理了要求而没有干预的步骤。

对我来说,它也没有下载整个依赖关系图。但是,我仍然很感激这个答案,因为只有一个软件包缺失,并且我只需将其明确添加到requirements.txt中。

我认为应该是:--find-links file:/path/to/some/dir/,并且您应该使用相同版本的pip下载和安装 - 否则可能会失败。

pip download -r requirements.txt是正确的。

注意,pip download 也会下载依赖项。

我在命令中添加了--no-deps,否则它将尝试在线查找某些依赖项(这是不可能的)。

您是否可以以某种方式为特定的Python版本生成requirements.txt?比如说,我有Python 3.8.2(不是最新版本)。我想要安装numpy软件包。我如何知道我需要为我的Python版本下载哪个版本?在线和离线计算机上的Python版本必须相同吗?

是的,我发现在执行此过程之前,在离线计算机上运行python --version非常有帮助!然后,在您的在线计算机上,根据pip download文档,您可以运行(对于Python 3.8.2):pip download --python-version=3.8.2 --only-binary=:all: -r requirements.txt。

0