为了开发运行pip install
的脚本,拥有--dry-run
函数会很有用。
我遇到了--no-install
选项。但是这个不推荐使用并且在电话参考this上。
有提示仅解压缩包,但我在pip文档中找不到unpack
选项。
答案 0 :(得分:14)
是 - pip应该有一个dry-run
选项,以指示在复杂情况下会发生什么。在没有问你的情况下运行pip install
降级软件包是危险的。我们需要一些方法来询问如果我们运行pip install -r requirements.txt
而不费力地搜索所有要求并将它们与当前安装的要求进行比较会发生什么。
看起来setup.py曾经有dry-run
。人们在其他地方要求它。
在这方面可以找到一些进展:
答案 1 :(得分:12)
看来你是对的,已被弃用(ref)。
如果通过试运行,您的意思是在实际在某个地方安装软件包之前测试它,大概是在系统范围内安装之前,那么您可以使用虚拟环境简单地运行沙盒,然后简单地丢弃环境。
virtualenv /tmp/venv; /tmp/venv/bin/pip install flask; rm -rf /tmp/venv
不像使用干涸的论点那样简洁,但是它确实起作用了。此外,如果您想进行一系列包安装的干运行,请在最后省略删除。
在脚本中,您可以将其提炼为一个程序:
#!/bin/bash
TMP_DIR='/tmp/venv'
function dry_run (){
if [ ! -d "$TMP_DIR" ]; then
virtualenv /tmp/venv
fi
/tmp/venv/bin/pip install $1
}
dry_run flask
dry_run uwsgi
rm -rf $TMP_DIR
如果你想做一个测试新安装在系统范围内部署得很好的干运行,那么使用virtualenv的system-site-packages选项。
virtualenv --system-site-packages /tmp/venv; /tmp/venv/bin/pip install flask; rm -rf /tmp/venv
答案 2 :(得分:1)
pip-sync
中的pip-tools
命令可以报告将要安装的软件包,但也将输出已安装但未在需求文件中的软件包。其空运行选项为-n
$ pip install pip-tools
$ pip-sync -n requirements.txt
Would uninstall:
pip-tools
Would install:
requests
这是pip-sync
的帮助:
pip-sync --help
Usage: pip-sync [OPTIONS] [SRC_FILES]...
Synchronize virtual environment with requirements.txt.
Options:
--version Show the version and exit.
-n, --dry-run Only show what would happen, don't change anything
--force Proceed even if conflicts are found
-f, --find-links TEXT Look for archives in this directory or on this HTML
page
-i, --index-url TEXT Change index URL (defaults to PyPI)
--extra-index-url TEXT Add additional index URL to search
--trusted-host TEXT Mark this host as trusted, even though it does not
have valid or any HTTPS.
--no-index Ignore package index (only looking at --find-links
URLs instead)
-q, --quiet Give less output
--user Restrict attention to user directory
--cert TEXT Path to alternate CA bundle.
--client-cert TEXT Path to SSL client certificate, a single file
containing the private key and the certificate in
PEM format.
--help Show this message and exit.
答案 3 :(得分:0)
在Linux上的[丑陋的免责声明],您可以尝试以没有权限安装在/ usr /目录中的用户身份在系统位置进行安装。该命令失败,并显示“权限被拒绝”,但仅在记录缺少和没有的内容之后。
(让您想知道实际的空运行选项到底要实现多难)
答案 4 :(得分:-1)
使用pip版本9,有一个新选项--format freeze
,可为pip install -r
用例提供优雅的单行解决方案:
pip list --format freeze | diff - requirements.txt