什么是下载python软件包的最佳方式,以及pypi的依赖关系,以便在另一台机器上进行离线安装?有没有简单的方法用pip或easy_install来做到这一点?我试图在未连接到互联网的FreeBSD盒子上安装请求库。Python软件包离线安装
回答
如果软件包位于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
某些软件包可能需要手动归档到类似的外观tarball中。当我想要更新的(不太稳定的)版本的东西时,我会做很多事情。一些软件包不在PYPI上,所以它们也是如此。
假设您在~/src/myapp
中有正确形成的Python应用程序。 ~/src/myapp/setup.py
将有install_requires
列表,其中提到了您在/pypi
目录中的一件或多件事情。像这样:
install_requires=[
'boto',
'Flask',
'Werkzeug',
# and so on
如果你希望能够与所有必要的依赖运行你的应用程序,同时它还是黑客攻击,你会做这样的事情:
$ cd ~/src/myapp $ python setup.py develop --always-unzip --allow-hosts=None --find-links=/pypi
这样,你的应用程序将直接从你的源代码目录执行。你可以破解东西,然后重新运行应用程序而不重建任何东西。
如果你想安装你的应用和它的依赖到当前Python环境,你会做这样的事情:
$ cd ~/src/myapp $ easy_install --always-unzip --allow-hosts=None --find-links=/pypi .
在这两种情况下,如果一个或多个依赖AREN”的构建就会失败t目前在/pypi
目录中。它不会试图从互联网混杂安装丢失的东西。
我强烈建议在有效的virtual environment之内调用setup.py develop ...
和easy_install ...
以避免污染您的全局Python环境。这是(virtualenv),相当多的路要走。切勿在全球Python环境中安装任何东西。
如果您构建应用程序的计算机与您要部署它的计算机具有相同的体系结构,则可以简单地对整个虚拟环境目录进行压缩,将其全部放入其中。就在tarballing之前,您必须使虚拟环境目录可重新定位(请参阅--relocatable选项)。 注意:目标机器需要安装相同版本的Python,并且您的应用程序可能具有的任何基于C的依赖关系也必须预先安装(例如,如果您依赖于PIL,那么libpng,libjpeg等必须是预装)。
而不是'--allow-hosts = None'您可以使用开关'--no-index' – romor
请您详细说明如何创建一个正确形成的Python应用程序? –
@PrabhjotRai请参阅https://packaging.python.org/distributing/ –
我使用-d
(或--download
)选项到pip install
,这使得从PyPI下载sdist tarball的过程变得更加简单。例如,pip install --download /path/to/some/dir celery
会将芹菜及其所有依赖项的sdist tarball下载到/path/to/some/dir
(但不会安装它们)。然后,您可以使用pip install --no-index --find-links /path/to/some/dir/ celery
使用下载的sdist安装芹菜,而无需访问网络。如果您在这两个命令与-r requirements.txt
,其中requirements.txt是一个点要求文件列出所有你需要的软件包取代celery
(也可以选择你想要的版本)
的同样的过程。
UPDATE
弃用:PIP安装 - 表格下载已被弃用,并将于 在未来删除。 PIP现在有一个download命令,应该使用 。
的命令是这样的:
pip download -r requirements.txt
对于python3:
pip3 download -r requirements.txt
画中画8.1.2,您可以使用pip download -r requ.txt
将包下载到本地计算机。
脱机python。这样做的我使用的virtualenv(隔离Python环境)
1)安装的virtualenv 在线与PIP:
pip install virtualenv --user
或脱机WHL:去这个link,下载最新版本(.whl或焦油。 GZ)并安装使用下面的命令:使用--user
pip install virtualenv-15.1.0-py2.py3-none-any.whl --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 {烧瓶0.10.1.tar.gz,...}你的包
pip list
注意]
检查表:因为我们是在2017年,最好是使用Python 3哟你可以用这个命令创建python 3 virtualenv。
virtualenv -p python3 envname
使用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" *)
副本压缩包并安装:
$ 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
我在使用Python 3.6绑定到机器上时遇到了问题,而在使用Python 3.5解压时出现了问题:“_
- 1. python Beautifulsoup4软件包安装
- 2. Python安装软件包
- 3. 安装python软件包
- 4. 如何使用ubuntu 14.04.3离线安装软件包kickstart
- 5. 在离线计算机上安装Django及相关软件包
- 6. 如何为离线安装创建debian软件包?
- 7. 虚拟指南离线安装NPM软件包Windows
- 8. 在离线ArchLinux系统上安装软件包
- 9. 如何在离线服务器上安装H2O R软件包?
- 10. 如何在离线时安装npm软件包?
- 11. 如何在.Net Core项目中离线安装nuget软件包?
- 12. 离线的NuGet软件包
- 13. 无法安装python软件包表
- 14. 在OpenShift上安装python软件包
- 15. 无法安装Python软件包
- 16. OSX:安装python软件包时出错
- 17. 安装和导入python软件包
- 18. R,Python:在rpy2上安装软件包
- 19. Python:安装一些软件包
- 20. Python pip - 为软件包安装文档?
- 21. 在Python中安装软件包
- 22. python自动安装软件包
- 23. Pip只安装纯python软件包
- 24. 为python安装igraph软件包
- 25. 将python软件包安装到sys.path
- 26. 软件包阻止conda安装 - python
- 27. 安装Python的ahkab软件包
- 28. IBM_DB软件包安装Python 3.4
- 29. 无法安装Python-docx软件包
- 30. 在anaconda中安装python软件包
相关:[如何根据requirements.txt从本地目录安装软件包?](http://stackoverflow.com/q/7225900/95735) –