问题标签 [pip-tools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
220 浏览

pip - 如何使用 pip-tools 从 github repo 安装?

这是 req.in 文件(用于pip-compile)中的一行,用于从 github 存储库获取包:

跑步pip-compile req.in给出了一个req.txtwith

使用pip安装 ( pip install -r req.txt) 会出现此错误:

我安装了 setuptools(实际上是所有其他库)。看,没有错误:

如果我直接安装(没有-e)它可以工作:

但是当我-e退出时req.inpip-compile抱怨:

什么鬼,我被困住了。

如何将 github repo 放入 req.in,用 pip-compile 编译成 req.txt,然后 pip install req.txt 没有错误?

我需要它自动工作,因为我们有一个依赖它的工具链(github 工作流、dependabot 等)。

我在 OS X 上使用 python 3.9.1_2、pip 21.1.2、pip-tools 6.2.0。 pip-tools 6.0.1 也发生过(不足为奇)。

0 投票
1 回答
539 浏览

python - 使用 conda 和 pip 时,如何在 Python 中固定版本化依赖项?

我正在尝试遵循安装完全固定依赖项的最佳实践(对于可重复的构建和更好的 Docker 缓存,请参阅此 pythonspeed.com 文章)。

我的项目需要同时使用 conda 和 pip(conda 用于复杂的 ML 包,pip 用于 conda 上不可用的东西)。conda -lockpip-compile工具能够在固定版本中生成所有传递依赖项。但是,这些工具是独立的:当我运行 pip-compile 时,它​​不知道 conda-lock 想要安装的依赖项,反之亦然。

这会导致不同的包版本,导致 Docker 映像中的空间浪费,并可能导致损坏/不兼容,因为该pip install步骤安装了某些传递依赖项的不同版本。

在同时使用conda 和 pip时,有没有人有更好的解决方案来创建固定的 Python 依赖项列表?

(编辑:这是关于 conda-lock 的 github 票,以支持 pip 依赖项:https ://github.com/conda-incubator/conda-lock/issues/4 )

0 投票
1 回答
108 浏览

python - 如何使用 pip-tools 为 django 3.2 项目强制执行最低 python 版本?

我正在关注https://github.com/jazzband/pip-tools#without-setuppy文档中的without setup.py示例pip-tools

我所做的是我有这个作为我的requirements.in

然后我将其作为 prod-requirements.in

在我运行的生产中

我的问题是如何强制执行最低 python 版本?我只想设置到次要的python版本。例如,我想要一种固定到 python 3.8 的方法。

我可以用 pip-tools 做到这一点吗?我需要选择 setup.py 方法吗?

我更喜欢只使用 requirements.in 方法,因为我最熟悉它

0 投票
1 回答
487 浏览

python - 如何使用`pip-tools`中的`pip-compile`从`setup.cfg`文件的`extras_require`部分创建`dev_requirements.txt`?

我使用pip-tools来管理我的依赖项和环境,它们完美地requirements.txt为我的包生成一个文件,该文件由setup.py如下所示:

setup.cfg这样的:

运行$ pip-compile --index-url https://foo@bar@gitlab.my.host/api/v4/projects/236/packages/pypi/simple --no-header --allow-unsafe 产生我的包要求:

但这仅包括install_requires我文件部分中的所有包setup.cfg,而不包括extras_require. 它应该与此处dev_requirements.in描述的文件一起使用,但我宁愿只使用一个配置文件。

如何在不创建文件的情况下使用我的文件dev_requirements.txt的这一extras_require部分创建一个单独的文件?setup.cfgpip-compiledev_requirements.in

提前致谢!

0 投票
2 回答
396 浏览

python - pip-tools 不会将依赖项安装到激活的 virtualenv

我希望使用 pip-tools 将我的需求文件分为开发(requirements-dev.txt)和生产(requirements.txt)。

我已经使用 pipx 安装了 pip-tools,因为我希望它在全球范围内可用但被隔离。但是,这样做会导致我的依赖项由 pip-tools 安装在 pip-tools 本身的虚拟环境中,而不是激活的虚拟环境中。

我不知道这是否是一个因素,但我也在使用 pyenv 来管理我的 python 版本,但全局只安装了一个(非系统)版本。

给定我的环境(即使用 pipx 安装的 pip-tools,由 pyenv 管理的 python),我如何在激活的虚拟环境pip-sync中安装依赖项?

这是我重现这一点的工作流程:

生产依赖文件

开发依赖文件

0 投票
1 回答
75 浏览

python - pip 编译错误:AttributeError:“ParsedRequirement”对象没有属性“可编辑”

我正在尝试使用 pip-compile 来构建我的 requirements.txt 文件,但出现以下错误。

  • 点==21.2.4
  • 点工具==6.2.0

我尝试根据 pip-tools pypi 网站一起降级 pip 和 pip-tools 但我似乎无法克服这个错误。如果有人有建议,他们将不胜感激。

点数列表

0 投票
1 回答
78 浏览

python - 禁止在 pip-compile 的 requirements.txt 中添加 github 令牌

我有一个带有以下上下文的文件 requirements.in:

私有库是通过令牌从公司的 github 存储库下载的。

我的问题是${GITHUB_TOKEN}当我调用时被真实令牌替换并存储在 requirements.txt 中pip-compile,如何从 requirements.txt 中删除令牌?

我的输出看起来像 requirements.txt:

我正在使用 python 3。如何在此文件中获取没有真正的 github_token 的 requirements.txt?我可以得到 requirements.in 中的格式吗(git+https://${GITHUB_TOKEN}@github.com/company/some-lib-name.git@v1.4.0)

0 投票
1 回答
48 浏览

docker - 让 pip-compile 根据安装的 tensorflow 版本确定 tensorflow 包的版本

我有以下内容Dockerfile

以及以下内容requirements.in

这个想法是能够使用 tensorflow 版本作为参数来构建 Docker 映像,例如:

pip-compile找出与 Docker 镜像附带的 tensorflow 版本兼容的附加 tensorflow 模块的版本。

但这失败了:

如何在不手动在requirements.in文件中添加版本限制的情况下解决此问题?

0 投票
1 回答
35 浏览

homebrew - 像自制软件的 pip-tools 之类的东西?

当您使用homebrew安装某些东西时,它还会安装依赖项,这很好。但后来,当您卸载此特定项目时,依赖项仍然安装。所以随着时间的推移,你安装了很多软件,却不知道为什么。

对于pip,情况类似,有pip-tools之类的解决方案。您必须整理一个包含所需包的列表 ( requirements.in) 并pip-compile获得所有包的列表,包括依赖项 ( requirements.txt)。当您在 中删除一个条目requirements.in并重新编译时,依赖项也会在 中消失requirements.txt,只要它们不需要其他东西。

我想知道自制软件是否有类似的东西?

0 投票
1 回答
43 浏览

python - docker 层缓存与 pip install 相结合会导致无法重现的图像吗?

鉴于以下 dockerfile

当我们在同一台机器上多次运行它时,我的理解是对于RUN pip install缓存的 docker 层将被使用,除非我们更改requirements.txt. 但是,给定一台没有层缓存的新机器和一些新发布的包,相同的 Dockerfile 将导致安装不同的包,对吗?

如果是,确保最佳做法是什么

  • 可重现的构建
  • 使用 docker 层缓存快速构建
  • 使用最新的可用软件包?

我可以设想使用 pip-tools 中的 egpip-compile --update可能有所帮助,但对 docker 如何缓存文本文件了解得太少。