有没有办法在基于环境变量值的 pip requirements.txt 文件中指定条件安装?
我已经能够使用环境标记来控制我需要的大部分内容,但是我所知道的所有标记都只能使用本质上由 Python 预先定义的特定值。
例如,我希望能够控制 RHEL 5.3 vs. RHEL 6.3 vs. RHEL 6.6 等的包安装。也基于其他标准。
如果我可以在 results.txt 文件中指定一个环境变量,该变量将根据我在运行 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 密钥?
我正在尝试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==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) 使用pip,您可以创建需求文件以指定要安装的库.是否有使用CPAN的perl模块的等效项?
我遇到了ExtUtils :: MakeMaker,但这看起来像make文件专门用于每个模块.
我想尝试更好地了解我所问的是否有办法做某事
cpan install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
然后指定要在该需求文件中安装的模块.
提前致谢!
我对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) 我希望能够为自己的创建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代码库的requirements.txt文件。该文件具有指定的所有内容:
pytz==2017.2
requests==2.18.4
six==1.11.0
Run Code Online (Sandbox Code Playgroud)
我要添加一个新包。我应该列出它的版本吗?如果是,如何选择要指定的版本?
您好,我需要从 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-test
即ssh://git@gitlab.com/project/project-utils.git
.
如何在 ssh 地址中包含分支名称?
我正在尝试使用从另一个网站下载的 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)