我将分享我对此的想法。
首先,您的项目的抽象依赖项将在 setup.py 的 install_requires 中列出。如果可能,它们不应被固定,并且不建议从其他地方读取 setup.py 中的依赖项。
因此,如果您安装使用 创建的包python setup.py sdist
,则不会使用该项目的 Pipfile.lock。相反,包的用户负责锁定依赖项并将包安装到 virtualenv 中。
要使用我们的 Pipfile.lock,我们需要一种不同的部署方法。我收集了一些。
1)git clone
目标机器上的存储库或目标机器上的存储库rsync -r
。pipenv install --deploy
在克隆的项目目录中运行。有几种使用 virtualenv 的方法:
pipenv run <appname>
从克隆的项目目录启动应用程序。确保您是创建 virtualenv 的同一用户。
- 通过从克隆的项目目录作为创建 virtualenv 的同一用户运行来检索 virtualenv 位置,
pipenv --venv
并直接使用它来运行您的应用程序。
- 在运行之前设置
PIPENV_VENV_IN_PROJECT=1
环境变量pipenv install --deploy
以获得一致的 virtualenv 位置,然后您可以直接使用它来运行您的应用程序。
- 在运行 pipenv 之前,手动创建一个 virtualenv 然后从那里运行 pipenv。Pipenv 将自动使用该 virtualenv 而不是创建一个新的。有关完整的工作流程,请参阅https://stackoverflow.com/a/49388414/7662112。
2) 用于pipenv install --system --deploy
从 docker 中的 Pipfile.lock 设置 virtualenv。然后只需使用 docker 映像进行部署。
3) 将 Pipfile.lock 转储到 requirements.txt 中,pipenv lock --requirements > requirements.txt
并使用dh-virtualenv
.