如何告诉 pip3 在下载和安装 python3 软件包时更喜欢下载(和安装)wheel 文件而不是 tar.gz

问题描述 投票:0回答:2

我对Python及其所有“部署”相关工具有点陌生:

pip3
setuptools
virtualenv
wheel
等,所以我希望我的问题有意义......无论如何它就像这样:

我有一个使用

virtualenv
通过虚拟环境“管理”的 Python3 项目,其中所有项目的依赖项都在项目的
setup.py
文件中“列出”。
setup.py
文件内容如下:

setup(name="MyProjectName",
      version="0.1",
      description="Some description",
      url="someURL",
      author="My Name",
      author_email="someemail",
      license="MIT",
      packages=find_packages(),
      include_package_data=True,
      install_requires=["robotframework", "paramiko"])

如您所见,该项目(明确)使用的唯一第 3 方包是

robotframework
paramiko

现在,当我部署项目时,我会执行以下操作(按顺序):

  1. 使用命令创建虚拟环境:

    virtualenv -p python3 virtualEnvFolderName

  2. 像这样切换“进入”虚拟环境(我将其部署在 Linux 计算机上):

    source virtualEnvFolderName/bin/activate

  3. 使用

    setup.py
    参数运行
    install
    脚本以“自动”安装所有项目的依赖项,命令如下:
    python3 setup.py install

--> 直到几天前,

setup.py
文件中列出的所有第 3 方软件包(及其“依赖项子包”)都是使用其
whl
文件下载(然后安装)的,即 -示例:
paramiko
软件包安装的输出将是:

阅读https://pypi.org/simple/paramiko/ 下载https://files.pythonhosted.org/packages/4b/80/74dace9e48b0ef923633dfb5e48798f58a168e4734bca8ecfaf839ba051a/paramiko-2.6.0-py2.py3-none-any.whl#sha256=99f0179bdc17628 1d21961a003ffdb2ec369daac1a1007241f53374e376576cf 最佳匹配:paramiko 2.6.0 处理 paramiko-2.6.0-py2.py3-none-any.whl 安装 paramiko-2.6.0-py2.py3-none-any.whl 到

--> 这样,安装速度非常快(每个包约 1-3 秒)。

今天,当我在同一台机器上执行相同的过程时(我很确定我没有更改 Ubuntu 16.04 机器上的任何设置),对于

setup.py
尝试安装的每个软件包,它“通过”安装
tar.gz
文件(即源?)和 NOT 使用
whl
文件 --> 这需要更长的时间,因为对于某些包来说,它实际上构建(符合)所有“底层 C 库”。此“更改”使我的“安装过程”执行时间从约 20 秒增加到约 4 分钟。

我的问题是:

a) 我如何解决这种情况 - 最好更改部署程序,即 - 仍然执行上述 3 个步骤,考虑到可能会稍微修改一个或多个命令(创建虚拟环境和/或需要一些额外的参数

setup.py
?).

b)如果我没有其他选择,那么使用

pip3 install -r requirement.txt ...
“程序”也会很好,只要适用,它也会使用
whl
文件。

c)如果我需要将我的虚拟环境“生成器”“切换”到

venv
,这是可以的(实际上是首选,以防它将在“相同”的持续时间内部署项目)。

注意事项: 我分别在

Ubuntu 16.04
Ubuntu 18.04
机器上用
Python 3.5
Python 3.6
进行了测试。

谢谢!!

python-3.x virtualenv setuptools setup.py python-wheel
2个回答
0
投票

对于项目的当前版本PyNaCl,似乎没有与您的环境(操作系统、Python 解释器版本、CPU 位)兼容的 wheel。如果您有最新版本的 pip,命令

path/to/venv/bin/python -m pip debug --verbose
应列出与您的环境兼容的 tags,以便您可以与 PyPI 上可用的 wheels 列表进行比较。


0
投票

要从wheel而不是tar.gz(源)安装,您现在可以添加--prefer-binairy参数。与源包相比,这更喜欢二进制包,即使源包较新。

像这样:

pip install jellyfish --prefer-binairy

来自 pip 文档

© www.soinside.com 2019 - 2024. All rights reserved.