跨平台 Pipenv.lock
Cross-platform Pipenv.lock
我正在创建一个跨平台的 Python 应用程序,使用 pipenv
(据我了解 poetry
也有同样的问题)用于管理依赖项和虚拟环境。
尝试在 Windows 和 Linux 上构建应用程序时,我注意到 Pipenv.lock
是特定于平台的。
例如,我在Windows上创建一个项目并添加pytest
,它在锁定文件中有colorama
和"markers": "sys_platform == 'win32'"
。但是当修改Linux上的锁文件时,比如添加一个新的lib,这个依赖就会消失
这是两个系统和差异的完整输出 https://gist.github.com/AlexP11223/6457fd4c98272c526c855c63088c00d4
它应该像那样工作吗?如果是,最好的处理方法是什么?除了将所有平台的锁定文件提交到 Git 存储库(例如 Pipenv-win.lock
、Pipenv-linux.lock
)并在构建时将其中一个重命名为 Pipenv.lock
之外,还有什么更好的解决方案吗?
https://github.com/pypa/pipenv/issues/3902
Pipenv 开发人员建议添加 --keep-outdated
选项。它似乎有效,至少在这个简单的例子中是这样。
目前它在最新版本(2018.11.26)中不起作用,仅在Git repo master 分支中起作用。
UPD:看来我对 Poetry 的看法是错误的,默认情况下它可以正确处理此问题 https://gist.github.com/AlexP11223/afbe247175efdcc897930d8c6ab04184
我正在创建一个跨平台的 Python 应用程序,使用 pipenv
(据我了解 用于管理依赖项和虚拟环境。poetry
也有同样的问题)
尝试在 Windows 和 Linux 上构建应用程序时,我注意到 Pipenv.lock
是特定于平台的。
例如,我在Windows上创建一个项目并添加pytest
,它在锁定文件中有colorama
和"markers": "sys_platform == 'win32'"
。但是当修改Linux上的锁文件时,比如添加一个新的lib,这个依赖就会消失
这是两个系统和差异的完整输出 https://gist.github.com/AlexP11223/6457fd4c98272c526c855c63088c00d4
它应该像那样工作吗?如果是,最好的处理方法是什么?除了将所有平台的锁定文件提交到 Git 存储库(例如 Pipenv-win.lock
、Pipenv-linux.lock
)并在构建时将其中一个重命名为 Pipenv.lock
之外,还有什么更好的解决方案吗?
https://github.com/pypa/pipenv/issues/3902
Pipenv 开发人员建议添加 --keep-outdated
选项。它似乎有效,至少在这个简单的例子中是这样。
目前它在最新版本(2018.11.26)中不起作用,仅在Git repo master 分支中起作用。
UPD:看来我对 Poetry 的看法是错误的,默认情况下它可以正确处理此问题 https://gist.github.com/AlexP11223/afbe247175efdcc897930d8c6ab04184