【发布时间】:2020-03-19 23:32:42
【问题描述】:
我对 Python 及其所有“部署”相关工具有点陌生:pip3、setuptools、virtualenvwheel 等,所以我希望我的问题是有意义的......无论如何像这样:
我有一个 Python3 项目,它使用 virtualenv 在虚拟环境中“管理”,其中所有项目的依赖项都在项目的 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运行带有
install参数的setup.py脚本以“自动”使用以下命令安装所有项目的依赖项: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=99f0179bdc176281d21961a003ffdb2ec369daac1a1007241f53374e376576cf 最佳匹配: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 对其进行了测试。
谢谢!!
【问题讨论】:
-
找到解决方案了吗?它还在发生吗?我通读了你的问题,但我无法指出确切的问题是什么。如果您的环境中没有任何变化,那么安装应该仍然以类似的方式运行。你能把问题限制在一个平台、一个解释器和一个包版本上吗?在 paramiko 的例子中,似乎有一个 万向轮 可用,所以如果没有使用它是令人惊讶的......
-
@sinoroc - 嗨,我还没有找到解决方案。更准确地说(根据您的要求),我似乎“遇到问题”的包(即-
pip3通过.whl文件下载其tar.gz)是PyNaCI包。另外,pip3下载包的平台是 Ubuntu 18.04 64 位,带有 Python 3.6 解释器。在查看PyNaCI包(来自pypi.org/project/PyNaCl/#files)的“版本”页面后,我的“假设”是由于没有适用于 Python 3.6+ 的_x6_64.whl文件,因此它“退回”到tar.gz“风味”)。我想知道如果是这样我该怎么办...?
标签: python-3.x virtualenv setuptools setup.py python-wheel