标签: requirements.txt

基于 env 变量的 pip requirements.txt 条件或环境标记

有没有办法在基于环境变量值的 pip requirements.txt 文件中指定条件安装?

我已经能够使用环境标记来控制我需要的大部分内容,但是我所知道的所有标记都只能使用本质上由 Python 预先定义的特定值。

例如,我希望能够控制 RHEL 5.3 vs. RHEL 6.3 vs. RHEL 6.6 等的包安装。也基于其他标准。

如果我可以在 results.txt 文件中指定一个环境变量,该变量将根据我在运行 pip 之前设置的值进行检查,那将是完美的。这似乎是可取的和直接的功能。到目前为止,我还没有找到关于环境标记的全面讨论,所以我希望我刚刚错过了一些关键信息:-)

非常感谢。

python pip requirements.txt

10
推荐指数
1
解决办法
6699
查看次数

在 Jenkins 中:使用 SSH 密钥从 git repo 安装 pip

在我的 Jenkins 工作中,在构建阶段,我执行pip install -r requirements.txt. 在我的项目要求中,有一些通往私有 git 存储库的路径,需要 SSH 密钥进行身份验证。我已经创建了密钥(无密码),将公钥添加到 BitBucket 服务器,将私钥添加到 Jenkins 的凭据。

我的项目的代码与那些相同的SSH密钥(内部,詹金斯使用GIT_SSH)成功扳回一,但PIP不知道它们传递到服务器进行身份验证(日志显示:Permission denied (publickey)

我已经看到Use SSH Key from Jenkins Git Plugin to Run Git Commands during Build,但没有回答。我也看过其他一些关于Publish Over SSH插件的讨论,但我不确定它是否适用于我..

顺便说一下,构建机器是 Windows。

自动将私钥写入<home_folder>\.ssh\id_rsa对我来说似乎存在安全风险,尽管我可能错了..?

有没有办法将 Jenkins 配置为使用与 pip install ssh 条目相同的 SSH 密钥?

git ssh pip jenkins requirements.txt

10
推荐指数
1
解决办法
702
查看次数

pip 的 requirements.txt 最佳实践

我正在尝试requirements.txt为某人生成复制我的环境。您可能知道,标准方法是

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

我注意到这将列出所有包,包括已安装包的依赖项,这使得这个列表变得不必要。然后我浏览了一下,发现pip-chill它允许我们只列出requirements.txt.

现在,根据我的理解,当有人尝试使用 复制环境时pip install -r requirements.txt,这将自动安装已安装软件包的依赖项。

如果这是真的,这意味着使用pip-chill而不是pip生成requirements.txt. 我的问题是,是否还有其他风险可以使用pip-chill我在这里缺少的已安装软件包的依赖项?

pip requirements.txt

10
推荐指数
2
解决办法
3200
查看次数

有没有办法以编程方式确认 python 包版本满足需求说明符?

我正在尝试寻找是否有办法获取已安装的软件包和版本并检查它是否满足要求规范。

例如,如果我有包 pip==20.0.2,我希望程序执行以下操作:

CheckReqSpec("pip==20.0.2", "pip>=19.0.0")  -> True
CheckReqSpec("pip==20.0.2", "pip<=20.1")    -> True
CheckReqSpec("pip==20.0.2", "pip~=20.0.0")  -> True
CheckReqSpec("pip==20.0.2", "pip>20.0.2")   -> False
Run Code Online (Sandbox Code Playgroud)

我发现 pkg_resources.extern.packaging 有 version.parse,这对于比较大于或小于的不同版本很有用,但要求规范可能非常复杂,并且有像 ~= 这样的运算符不是标准数学运算符。

setuptools 文档有这个例子:

PickyThing<1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
Run Code Online (Sandbox Code Playgroud)

是否有现有的方法可以进行此检查,或者有一种简单的方法可以让我自己进行检查?

编辑: ~= 特别困难,特别是当规格作为变量输入时。* 版本要求也很难弄清楚,因为

 version.parse("20.0.*") == version.parse("20.0.1") # False
 version.parse("20.0.*") < version.parse("20.0.0")  # True 
 version.parse("20.0.*") < version.parse("20.1.1")  # True 
 version.parse("20.0.*") >= version.parse("20.0.0") # False
Run Code Online (Sandbox Code Playgroud)

python pip requirements.txt python-packaging

10
推荐指数
1
解决办法
934
查看次数

CPAN要求文件

使用pip,您可以创建需求文件以指定要安装的库.是否有使用CPAN的perl模块的等效项?

我遇到了ExtUtils :: MakeMaker,但这看起来像make文件专门用于每个模块.

我想尝试更好地了解我所问的是否有办法做某事

cpan install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

然后指定要在该需求文件中安装的模块.

提前致谢!

perl cpan requirements.txt cpanm

9
推荐指数
2
解决办法
1317
查看次数

Pip Requirements.txt --global-option导致其他包的安装错误."选项未被识别"

我对requirements.txt文件的--global-option和--install-option设置有困难.指定一个库的选项会导致其他库安装失败.

我正在尝试安装Python库"grab"和"pycurl".我需要指定pycurl安装选项:" - with-nss".我可以在完全干净的虚拟环境中复制错误.

在新的虚拟环境中,requirements.txt包含:

grab==0.6.25
pycurl==7.43.0 --install-option='--with-nss'
Run Code Online (Sandbox Code Playgroud)

然后安装:

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

将发生以下错误.

Installing collected packages: lxml, pycurl, pytils, six, user-agent, weblib, selection, grab
  Running setup.py install for lxml ... done
  Running setup.py install for pycurl ... done
  Running setup.py install for pytils ... error
    Complete output from command /home/ec2-user/test/env/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-8GvFzA/pytils/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n
'), __file__, 'exec'))" install --record /tmp/pip-BCG3Wl-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ec2-user/test/env/include/site/python2.7/pytils --with-nss:
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
       or: -c …
Run Code Online (Sandbox Code Playgroud)

python pip pycurl requirements.txt

9
推荐指数
1
解决办法
2324
查看次数

在运行时将pip需求添加到docker镜像

我希望能够为自己的创建docker镜像添加一些额外的要求.我的策略是使用CMD命令从dockerfile构建映像,该命令将在运行时使用已安装的卷执行"pip install -r"命令.

这是我的dockerfile:

FROM ubuntu:14.04

RUN apt-get update
RUN apt-get install -y python-pip python-dev build-essential 
RUN pip install --upgrade pip

WORKDIR /root

CMD ["pip install -r /root/sourceCode/requirements.txt"]
Run Code Online (Sandbox Code Playgroud)

有了dockerfile我构建了图像:

sudo docker build -t test .
Run Code Online (Sandbox Code Playgroud)

最后我尝试使用此命令附加我的新需求:

sudo docker run -v $(pwd)/sourceCode:/root/sourceCode -it test /bin/bash
Run Code Online (Sandbox Code Playgroud)

我的本地文件夹"sourceCode"包含一个有效的requirements.txt文件(它只包含一行值为"gunicorn").当我收到提示时,我可以看到需求文件存在,但是如果我执行pip freeze命令,则不会列出gunicorn包.

为什么requirements.txt文件已正确附加但pip命令无法正常工作?

python pip requirements.txt docker

9
推荐指数
2
解决办法
4017
查看次数

Python需求文件必须指定版本吗?

我有一个Python代码库的requirements.txt文件。该文件具有指定的所有内容:

pytz==2017.2
requests==2.18.4
six==1.11.0
Run Code Online (Sandbox Code Playgroud)

我要添加一个新包。我应该列出它的版本吗?如果是,如何选择要指定的版本?

python requirements.txt

9
推荐指数
3
解决办法
2698
查看次数

如何在Python的需求安装中包含git分支?

您好,我需要从 git 存储库的分支安装。我想将其包含在requirements.txt中,以便它可以使用命令安装pip install -r requirements.txt

我所知道的是如何从 master 分支安装(请参阅下面的 git ssh 条目):

这是我的requirements.txt

networkx==2.4
numpy==1.18.1
opencv-python==4.2.0.32
scipy==1.4.1
git+ssh://git@gitlab.com/project/project-utils.git
Run Code Online (Sandbox Code Playgroud)

如果我想从特定分支(1-fix-testssh://git@gitlab.com/project/project-utils.git.

如何在 ssh 地址中包含分支名称?

python git pip python-install requirements.txt

9
推荐指数
1
解决办法
6395
查看次数

当包源来自特定网站时如何格式化requirements.txt?

我正在尝试使用从另一个网站下载的 pip 将以下安装命令转换为 requirements.txt 格式,但无法弄清楚如何。任何人都可以提供帮助吗?

pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/index.html
Run Code Online (Sandbox Code Playgroud)

python pip python-3.x requirements.txt

8
推荐指数
1
解决办法
4338
查看次数