System PIP instead of virtualenv PIP by default?

后端 未结 2 1204
慢半拍i
慢半拍i 2021-01-13 08:08

After using virtualenv with pip off-and-on for a couple of days, I\'ve found that the version of PIP that is used after the virtualenv is actived is the global PIP instead o

相关标签:
2条回答
  • 2021-01-13 08:50

    When you create a virtualenv, the activate file hardcodes the variable VIRTUAL_ENV to the location in which you first created the root directory. This variable is then exported when you source <your-venv>/bin/activate.

    Consequently, if you move the virtualenv directory subsequent to its creation, the hardcoded file path will be incorrect.

    Just open <your-venv>/bin/activate in a text editor and make sure VIRTUAL_ENV is set to the new path of your virtualenv directory:

    VIRTUAL_ENV="/Full/path/to/<your-venv>"
    export VIRTUAL_ENV
    

    before running source <your-venv>/bin/activate again.

    Then of course you can test the version of pip with which pip which should produce:

    /Full/path/to/<your-venv>/bin/pip
    

    rather than /usr/bin/pip or /bin/pip etc.

    0 讨论(0)
  • 2021-01-13 09:07

    It is not the first time I see someone reporting the same issue. I don't know what is happening, but some people discourage the use o source /path/to/venv/bin/activate because it can mess up your $PATH.

    There is a way pip will always respect your virtualenv: don't rely on $PATH. Use:

    /path/to/venv/bin/pip install MYPACKAGE
    

    It would be nice to find out what is happening to you and share your solution with others. Meanwhile, it may be ok to use the absolute path to pip.

    0 讨论(0)
提交回复
热议问题