从pypi下载python包及其依赖项以离线安装到另一台机器的最佳方法是什么?使用pip或easy_install是否有简单的方法来做到这一点?我试图在一个没有连接到互联网的FreeBSD盒子上安装请求库。


当前回答

对于Pip 8.1.2,您可以使用Pip download -r request .txt将包下载到您的本地机器。

其他回答

我也遇到过类似的问题。我必须让它以同样的方式安装,我们从pypi。

我做了以下事情:

创建一个目录来存储机器中所有可以访问internet的包。 Mkdir -p /path/to/packages/ 将所有包下载到该路径下

编辑:你也可以试试: Python3 -m PIP wheel——no-cache-dir -r requirements.txt -w /path/to/packages .txt

pip download -r requirements.txt -d /path/to/packages

Eg:- ls /root/wheelhouse/  # **/root/wheelhouse** is my **/path/to/packages/**
total 4524
-rw-r--r--. 1 root root   16667 May 23  2017 incremental-17.5.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   34713 Sep  1 10:21 attrs-18.2.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root 3088398 Oct 15 14:41 Twisted-18.9.0.tar.bz2
-rw-r--r--. 1 root root  133356 Jan 28 15:58 chardet-3.0.4-py2.py3-none-any.whl
-rw-r--r--. 1 root root  154154 Jan 28 15:58 certifi-2018.11.29-py2.py3-none-any.whl
-rw-r--r--. 1 root root   57987 Jan 28 15:58 requests-2.21.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   58594 Jan 28 15:58 idna-2.8-py2.py3-none-any.whl
-rw-r--r--. 1 root root  118086 Jan 28 15:59 urllib3-1.24.1-py2.py3-none-any.whl
-rw-r--r--. 1 root root   47229 Jan 28 15:59 tqdm-4.30.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root    7922 Jan 28 16:13 constantly-15.1.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root  164706 Jan 28 16:14 zope.interface-4.6.0-cp27-cp27mu-manylinux1_x86_64.whl
-rw-r--r--. 1 root root  573841 Jan 28 16:14 setuptools-40.7.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   37638 Jan 28 16:15 Automat-0.7.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   37905 Jan 28 16:15 hyperlink-18.0.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   52311 Jan 28 16:15 PyHamcrest-1.9.0-py2.py3-none-any.whl
 -rw-r--r--. 1 root root   10586 Jan 28 16:15 six-1.12.0-py2.py3-none-any.whl

Tar包目录,并将其复制到没有互联网接入的机器。那么做的, / /包/ cd /路径 Tar -cvzf packages.tar.gz。#不是。(点)在结尾

将packages.tar.gz复制到没有互联网接入的目标机器。

在没有互联网接入的机器中,执行以下操作(假设您将tar包复制到当前机器中的/path/to/package/) / /包/ cd /路径 Tar -xvzf packages.tar.gz mkdir -p $HOME/.config/pip/ vi $ HOME / config /脉冲/ pip.conf

然后将下面的内容粘贴进去并保存。

[global]
timeout = 10
find-links = file:///path/to/package/
no-cache-dir = true
no-index = true

最后,我建议您使用某种形式的virtualenv来安装软件包。 Virtualenv -p python2 venv #使用python3,如果你在python3 源。/ venv / bin /激活 PIP install <package>

您应该能够下载目录/路径/到/package/下的所有模块。

注意:我只是这样做,因为我不能添加选项或改变我们安装模块的方式。否则我早就这么做了

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

使用轮子编译包。

包:

$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ pip wheel -r requirements.txt --wheel-dir=$tempdir
$ cwd=`pwd`
$ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *)

复制tarball并安装:

$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2)
$ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdir/*

注意轮二进制包不是跨机器的。

更多参考资料请访问:https://pip.pypa.io/en/stable/user_guide/#installation-bundles

下载tarball,将它转移到你的FreeBSD机器并提取它,然后运行python setup.py install,你就完成了!

编辑:在此基础上,您现在还可以使用pip安装焦油球。

离线python。为此,我使用virtualenv(孤立的Python环境)

1)安装virtualenv 与pip在线:

pip install virtualenv --user

或离线使用whl:转到此链接,下载最新版本(。WHL或tar.gz),并使用以下命令安装:

pip install virtualenv-15.1.0-py2.py3-none-any.whl --user

通过使用——user,您不需要使用sudo pip....

2)使用virtualenv

在在线机器上选择一个终端CD目录并运行以下代码:

python -m virtualenv myenv
cd myenv
source bin/activate
pip install Flask

安装完所有的包后,你必须生成一个requirements.txt文件,这样当你的virtualenv处于活动状态时,就可以写了

pip freeze > requirements.txt

打开一个新终端并创建另一个env,如myenv2。

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
ls

现在您可以转到您的脱机文件夹,其中有requirements.txt和transferred_packages文件夹。下载带有以下代码的包,并将它们全部放到transferred_packages文件夹中。

pip download -r requirements.txt

把您的脱机文件夹到脱机计算机,然后

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
cd offline
pip install --no-index --find-links="./tranferred_packages" -r requirements.txt

离线文件夹[requirements.txt, transferred_packages {Flask-0.10.1.tar.gz,…}]

检查你的包裹清单

pip list

注意:因为我们是在2017年,所以最好使用python 3。使用该命令可以创建python 3 virtualenv。

virtualenv -p python3 envname

对于Pip 8.1.2,您可以使用Pip download -r request .txt将包下载到您的本地机器。