擅长:python、mysql、java
<p><code>xargs</code>解决方案可以工作,但可能存在可移植性问题(BSD/GNU)和/或如果您的需求文件中有注释或空行,则会很麻烦。</p>
<p>对于需要这种行为的用例,我使用了两个单独的需求文件,一个只列出需要始终安装的核心依赖项,另一个包含非核心依赖项的文件,在大多数用例不需要的90%的用例中。这相当于debian包的<code>Recommends</code>部分。</p>
<p>我使用以下shell脚本(需要<code>sed</code>)来安装可选依赖项:</p>
<pre><code>#!/bin/sh
while read dependency; do
dependency_stripped="$(echo "${dependency}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
# Skip comments
if [[ $dependency_stripped == \#* ]]; then
continue
# Skip blank lines
elif [ -z "$dependency_stripped" ]; then
continue
else
if pip install "$dependency_stripped"; then
echo "$dependency_stripped is installed"
else
echo "Could not install $dependency_stripped, skipping"
fi
fi
done < recommends.txt
</code></pre>