从github下直接clone下来的代码在运行之前需要对一些文件进行修改,否则会出现关于REQUIREMENTS的错误


说明:代码前边是"-"号的,需要删除,代码前边是“+”号的,是需要添加上去的。注意区分哪些是注释,哪些是代码,不过多解释了。


1./inc/python

66行,function pip_install_gr {     #这个函数内

# Wrapper for ``pip install`` to set cache and proxy environment variables
 # Uses globals ``OFFLINE``, ``PIP_VIRTUAL_ENV``,
-# ``PIP_UPGRADE``, ``TRACK_DEPENDS``, ``*_proxy``
+# ``PIP_UPGRADE``, ``TRACK_DEPENDS``, ``*_proxy``,
+# ``REQUIREMENTS_MODE``
 # pip_install package [package ...]
 function pip_install {
     local xtrace=$(set +o | grep xtrace)


103行,function pip_install { #这个函数内

 fi
     fi
 
+    cmd_pip="$cmd_pip install"
+
+    # Handle a constraints file, if needed.
+    if [ "$REQUIREMENTS_MODE" == "constraints" -a -n "$REQUIREMENTS_DIR" ]; then
+        cmd_pip="$cmd_pip -c $REQUIREMENTS_DIR/upper-constraints.txt"
+    fi
+
     local pip_version=$(python -c "import pip; \
                         print(pip.__version__.strip('.')[0])")
     if (( pip_version<6 )); then



116行,function pip_install { #这个函数内

https_proxy="${https_proxy:-}" \
         no_proxy="${no_proxy:-}" \
         PIP_FIND_LINKS=$PIP_FIND_LINKS \
-        $cmd_pip install $upgrade \
+        $cmd_pip $upgrade \
         $@
 
     # Also install test requirements



128行,function pip_install { #这个函数内

https_proxy=${https_proxy:-} \
             no_proxy=${no_proxy:-} \
             PIP_FIND_LINKS=$PIP_FIND_LINKS \
-            $cmd_pip install $upgrade \</span>
+            $cmd_pip $upgrade \</span>
             -r $test_req
     fi<span style="color:#aa22aa;">





215行,说明:这个函数我并没有在源文件中找到,不知道是不是需要自己手动添加,如果有知道结果的希望可以告诉我。

function setup_package_with_req_sync { #这个函数内

 # ``errexit`` requires us to trap the exit code when the repo is changed
     local update_requirements=$(cd $project_dir && git diff --exit-code >/dev/null || echo "changed")
 
-    if [[ $update_requirements != "changed" ]]; then</span>
+    if [[ $update_requirements != "changed" && "$REQUIREMENTS_MODE" != "constraints" ]]; then
         if is_in_projects_txt $project_dir; then
             (cd $REQUIREMENTS_DIR; \
                 ./.venv/bin/python update.py $project_dir)


2.  /lib/infra

33行,

<div class="diff ctx"># bring down global requirements</div><div class="diff ctx">     git_clone $REQUIREMENTS_REPO $REQUIREMENTS_DIR $REQUIREMENTS_BRANCH</div><div class="diff ctx">     [ ! -d $PIP_VIRTUAL_ENV ] && virtualenv $PIP_VIRTUAL_ENV</div><div class="diff add">+    # XXX: Remove when 7.1 is released.</div><div class="diff add">+    $REQUIREMENTS_DIR/.venv/bin/pip install -U git+https://github.com/pypa/pip@develop#egg=pip</div><div class="diff ctx">     # We don't care about testing git pbr in the requirements venv.</div><div class="diff ctx">     PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr</div><div class="diff ctx">     PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install $REQUIREMENTS_DIR</div>


3../stack.sh


685行,

# Configure an appropriate Python environment
 if [[ "$OFFLINE" != "True" ]]; then
+    REQUIREMENTS_MODE=${REQUIREMENTS_MODE:-} \
     PYPI_ALTERNATIVE_URL=${PYPI_ALTERNATIVE_URL:-""} $TOP_DIR/tools/install_pip.sh
 fi


699行,

virtualenv --system-site-packages $DEST/.venv
     source $DEST/.venv/bin/activate
     $DEST/.venv/bin/pip freeze > $DEST/requires-pre-pip
+    # XXX: Remove when 7.1 is released.
+    $DEST/.venv/bin/pip install -U git+https://github.com/pypa/pip@develop#egg=pip
 fi
 
 # Do the ugly hacks for broken packages and distros



4.   ./stackrc

149行,

# Zero disables timeouts
 GIT_TIMEOUT=${GIT_TIMEOUT:-0}
 
+# Requirements enforcing mode
+#
+# - strict (default) : ensure projects.txt requirements files match
+#   what's in global requirements.
+#
+# - constraints : do not modify project requirements at all. Instead
+#   use upper-constraints.txt to constraint the versions of things installed
+#   via pip for all pip invocations made during stack.sh.
+REQUIREMENTS_MODE=${REQUIREMENTS_MODE:-strict}
 
 # Repositories
 # ------------


5.  /tools/build_wheel.sh

56行,

# Prepare the workspace
 TMP_VENV_PATH=$(mktemp -d tmp-venv-XXXX)
 virtualenv $TMP_VENV_PATH
+# Back this out when 7.1 is released.
+$TMP_VENV_PATH/bin/pip install -U git+https://github.com/pypa/pip@develop#egg=pip
 
 # Install modern pip and wheel
-PIP_VIRTUAL_ENV=$TMP_VENV_PATH pip_install -U pip wheel
+PIP_VIRTUAL_ENV=$TMP_VENV_PATH pip_install -U wheel
 
 # BUG: cffi has a lot of issues. It has no stable ABI, if installed
 # code is built with a different ABI than the one that's detected at



6. /tools/install_pip.sh

62行,

function install_get_pip {
 }
 
 
+function install_constraints_pip {
+    # Constraints requires pip 7.1.0 or newer. For now, when constraints are
+    # used, if -c isn't in the help, install develop.
+    if !(pip install -h | grep -- --constraint); then
+        sudo -H -E python -m pip install -U git+https://github.com/pypa/pip@develop#egg=pip
+    fi
+}
+
+
 function configure_pypi_alternative_url {
     PIP_ROOT_FOLDER="$HOME/.pip"
     PIP_CONFIG_FILE="$PIP_ROOT_FOLDER/pip.conf"



97行,

get_versions
 uninstall_package python-pip
 
 install_get_pip
+if [[ "$REQUIREMENTS_MODE" == "constraints" ]]; then
+    install_constraints_pip
+fi
 
 if [[ -n $PYPI_ALTERNATIVE_URL ]]; then
     configure_pypi_alternative_url


再说一下,修改代码的时候,加号和减号记得自己删除掉,别直接都粘贴上去了。


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐