我对Python及其所有与“部署”相关的工具有些陌生,这些工具包括:pip3
,setuptools
,virtualenv
wheel
等,所以我希望我的问题会有道理...反正是这样的:
我有一个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"])
如您所见,项目使用(明确)的唯一第三方软件包是robotframework
和paramiko
。
现在,当我部署项目时,我将按照以下顺序执行以下操作:
-
使用以下命令创建虚拟环境:
virtualenv -p python3 virtualEnvFolderName
-
像这样切换“进入”虚拟环境(我正在将其部署在Linux机器上):
source virtualEnvFolderName/bin/activate
-
使用
setup.py
参数运行install
脚本以“自动”使用以下命令安装项目的所有依赖项:python3 setup.py install
->直到几天前,setup.py
文件中列出的所有第3方软件包(及其“依赖项子软件包”)都使用{{1}下载并安装了) }文件,即-例如:whl
软件包安装的输出为:
阅读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机器上的任何设置),对于paramiko
尝试安装的每个软件包,它都已安装使用setup.py
文件“>”通过tar.gz
文件(即源?)和不->花费更长时间,因为对于某些实际构建的软件包(符合)的所有“基础C库”。此“更改”使我的“安装过程”的执行时间从〜20秒增加到〜4分钟。
我的问题是:
a)如何解决这种情况-最好不更改部署过程,即-仍然执行上述3个步骤,并考虑到其中一个或多个命令可能会稍微修改(创建虚拟环境和/或whl
需要一些其他参数)。
b)如果没有其他选择,那么使用setup.py
“过程”也将是一件好事,只要适用,它也会使用pip3 install -r requirement.txt ...
文件。
c)如果我需要将虚拟环境“生成器”“切换”到whl
,就可以了(实际上是首选,以防它在“相同”的持续时间内部署项目)。
注意:
我分别在venv
和Ubuntu 16.04
的{{1}}和Ubuntu 18.04
机器上进行了测试。
谢谢!