Python包离线安装

2024-04-25 06:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

如果要脱机安装python libs及其依赖项,请在安装了相同操作系统、网络连接和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将libs及其依赖项下载到目录wheelhouse

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

4)用tar -zcf wheelhouse.tar.gz 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安装libs及其依赖项

pipdownload命令允许您下载包而不安装它们:

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,而无需访问网络。

如果包在PYPI上,请将其及其依赖项下载到某个本地目录。 E、 g

$ 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

有些包裹可能需要手工归档到类似的tarballs中。当我想要一个更新(不太稳定)的版本时,我会做很多。有些包不在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 .

在这两种情况下,如果/pypi目录中不存在一个或多个依赖项,则生成将失败。它不会试图杂乱地安装互联网上丢失的东西。

我强烈建议在活动的virtual environment中调用setup.py develop ...easy_install ...,以避免污染全局Python环境。这是(virtualenv就是)差不多的路要走。永远不要在全局Python环境中安装任何东西。

如果您构建应用程序的计算机的体系结构与您要在其上部署应用程序的计算机的体系结构相同,则只需将整个虚拟环境目录拖放到其中,您就可以将所有内容都拖到其中。不过,在进行tarball之前,必须使虚拟环境目录可重定位(请参见--relocatable选项)。注意:目标计算机需要安装相同版本的Python,并且您的应用程序可能具有的任何基于C的依赖项也必须预先安装在那里(例如,如果您依赖于PIL,则必须预先安装libpng、libjpeg等)。

相关问题 更多 >