我对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
。
现在,当我部署项目时,我会执行以下操作(按顺序):
使用命令创建虚拟环境:
virtualenv -p python3 virtualEnvFolderName
像这样切换“进入”虚拟环境(我将其部署在 Linux 计算机上):
source virtualEnvFolderName/bin/activate
使用
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
进行了测试。
谢谢!!
对于项目的当前版本PyNaCl,似乎没有与您的环境(操作系统、Python 解释器版本、CPU 位)兼容的 wheel。如果您有最新版本的 pip,命令
path/to/venv/bin/python -m pip debug --verbose
应列出与您的环境兼容的 tags,以便您可以与 PyPI 上可用的 wheels 列表进行比较。
要从wheel而不是tar.gz(源)安装,您现在可以添加--prefer-binairy参数。与源包相比,这更喜欢二进制包,即使源包较新。
像这样:
pip install jellyfish --prefer-binairy
来自 pip 文档。