问题:如何离线安装软件包?
从pypi下载python软件包的最佳方法是什么,以便从另一台计算机上脱机安装?有什么简单的方法可以通过pip或easy_install来做到这一点?我正在尝试在未连接到Internet的FreeBSD盒上安装请求库。
回答 0
如果该软件包位于PYPI上,则将其及其依赖项下载到某个本地目录。例如
$ mkdir / pypi && cd / pypi $ ls -la -rw-r--r-- 1个Pavel人员237954 Apr 19 11:31 Flask-WTF-0.6.tar.gz -rw-r--r-- 1个Pavel员工389741 2月22日17:10 Jinja2-2.6.tar.gz -rw-r--r-- 1个Pavel人员70305 Apr 11 00:28 MySQL-python-1.2.3.tar.gz -rw-r--r-- 1个Pavel人员2597214 Apr 10 18:26 SQLAlchemy-0.7.6.tar.gz -rw-r--r-- 1个Pavel员工1108056 2月22日17:10 Werkzeug-0.8.2.tar.gz -rw-r--r-- 1个Pavel员工488207 Apr 10 18:26 boto-2.3.0.tar.gz -rw-r--r-- 1个Pavel人员490192 4月16日12:00 flask-0.9-dev-2a6c80a.tar.gz
某些软件包可能必须手工存档到外观相似的tarball中。当我想要某个东西的最新版本(不稳定)时,我会做很多事情。某些软件包不在PYPI上,因此也适用于它们。
假设您在中有一个格式正确的Python应用程序~/src/myapp
。~/src/myapp/setup.py
将会install_requires
列出您/pypi
目录中的一或多个内容的列表。像这样:
install_requires=[
'boto',
'Flask',
'Werkzeug',
# and so on
如果您希望能够在拥有所有必要依赖项的情况下运行您的应用程序,同时仍然对其进行黑客攻击,则可以执行以下操作:
$ cd〜/ src / myapp $ python setup.py开发--always-unzip --allow-hosts = None --find-links = / pypi
这样,您的应用将直接从您的源目录执行。您可以破解某些东西,然后重新运行该应用程序而无需重建任何内容。
如果要将应用程序及其依赖项安装到当前的python环境中,请执行以下操作:
$ cd〜/ src / myapp $ easy_install --always-unzip --allow-hosts = None --find-links = / pypi。
在这两种情况下,如果/pypi
目录中不存在一个或多个依赖项,构建都将失败。它不会尝试从Internet混杂地安装丢失的东西。
我强烈建议在活动的虚拟环境中调用它setup.py develop ...
,以避免污染全局Python环境。(virtualenv是)几乎可以走的路。切勿在全局Python环境中安装任何东西。easy_install ...
如果您构建了应用程序的计算机与要在其上部署应用程序的计算机具有相同的体系结构,则可以将所有easy_install
内容都放入其中的整个虚拟环境目录中。不过,在压缩之前,您必须使虚拟环境目录可重定位(请参见 –relocatable选项)。注意:目标计算机需要安装相同版本的Python,并且应用程序可能也已经预安装了基于C的任何依赖关系(例如,如果您依赖PIL,那么必须预安装libpng,libjpeg等) 。
回答 1
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
来安装那些下载的sdist,而无需访问网络。
回答 2
如果要脱机安装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
创建需求文件的一种方法是使用pip freeze > requirements.txt
。这将列出您环境中的所有库。那你可以进去requirements.txt
并删除不需要的对象。
2)执行命令 mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse
以将库及其依赖项下载到目录wheelhouse
3)将requirements.txt复制到 wheelhouse
目录中
4)存档驾驶室成wheelhouse.tar.gz
与tar -zcf wheelhouse.tar.gz wheelhouse
然后上传wheelhouse.tar.gz
到目标计算机:
1)执行tar -zxf wheelhouse.tar.gz
以提取文件
2)执行pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse
以安装库及其依赖项
回答 3
离线python。为此,我使用virtualenv(隔离的Python环境)
1)使用pip在线安装virtualenv:
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
和tranferred_packages
文件夹所在的脱机文件夹。使用以下代码下载软件包,并将其全部放入tranferred_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,tranferred_packages {Flask-0.10.1.tar.gz,…}]
检查包裹清单
pip list
注意:与2017年一样,最好使用python3。您可以使用此命令创建python 3 virtualenv。
virtualenv -p python3 envname
回答 4
下载压缩包,将其转移到您的FreeBSD机器上并解压缩,然后运行python setup.py install
就可以了!
编辑:只是要补充一点,您现在也可以使用pip安装tarball。
回答 5
让我一步一步地完成该过程:
- 在连接到互联网的计算机上,创建一个文件夹。
$ mkdir packages
$ cd packages
打开命令提示符或shell并执行以下命令:
假设您想要的软件包是
tensorflow
$ pip download tensorflow
现在,在目标计算机上,复制
packages
文件夹并应用以下命令
$ cd packages
$ pip install 'tensorflow-xyz.whl' --no-index --find-links '.'
请注意,tensorflow-xyz.whl
必须将替换为所需软件包的原始名称。
回答 6
使用wheel
编译包。
打包:
$ 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/*
注意wheel
二进制软件包不是跨机器的。
更多参考 此处:https : //pip.pypa.io/en/stable/user_guide/#installation-bundles
回答 7
我有一个类似的问题。而且我必须以相同的方式安装它,我们是从pypi安装的。
我做了以下事情:
创建一个目录以存储机器中所有可以访问Internet的软件包。
mkdir -p /path/to/packages/
将所有软件包下载到路径
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
压缩软件包目录,然后将其复制到没有Internet访问权限的计算机上。然后做,
cd /path/to/packages/ tar -cvzf packages.tar.gz . # not the . (dot) at the end
将packages.tar.gz复制到没有Internet访问权限的目标计算机中。
在无法访问互联网的计算机上,执行以下操作(假设您将已解压缩的软件包复制到当前计算机上的/ path / to / package /中)
cd /path/to/packages/ tar -xvzf packages.tar.gz mkdir -p $HOME/.config/pip/ vi $HOME/.config/pip/pip.conf
并将以下内容粘贴并保存。
[global] timeout = 10 find-links = file:///path/to/package/ no-cache-dir = true no-index = true
最后,我建议您使用某种形式的
virtualenv
安装软件包。virtualenv -p python2 venv # use python3, if you are on python3 source ./venv/bin/activate pip install <package>
您应该能够下载目录/ path / to / package /中的所有模块。
注意:我只是这样做,因为我无法添加选项或更改我们安装模块的方式。不然我会做的
pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt
回答 8
对于Pip 8.1.2,您可以用于pip download -r requ.txt
将软件包下载到本地计算机。