apt-get install for different python versions

后端 未结 3 1472
粉色の甜心
粉色の甜心 2020-12-29 07:15

I have ubuntu 10.04 with python2.6 by default. I have installed python2.7.

When I want to install python packages with

apt-get python-

        
3条回答
  •  难免孤独
    2020-12-29 08:06

    pyenv

    https://github.com/pyenv/pyenv

    Pyenv allows you to manage multiple Python versions without sudo for a single user, much like Node.js NVM and Ruby RVM.

    Install Pyenv:

    curl https://pyenv.run | bash
    

    Then add to your .bashrc:

    export PATH="${HOME}/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    

    Find Python version to install:

    pyenv install --list
    

    Install the python version you want:

    # Increase the chances that the build will have all dependencies.
    # https://github.com/pyenv/pyenv/wiki/Common-build-problems
    sudo apt build-dep python3
    sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
      libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
      xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
    
    # Build and install a Python version from source.
    pyenv install 3.8.0
    

    List available Python versions:

    pyenv versions
    

    We now have:

    * system (set by /home/cirsan01/.pyenv/version)
      3.8.0
    

    Select a different python version:

    pyenv global 3.8.0
    python --version
    python3 --version
    

    Both output:

    Python 3.8.0
    

    We can now proceed to install and use packages normally:

    pip install cowsay
    python -c 'import cowsay; cowsay.tux("Python is fun")'
    cowsay 'hello'
    

    We can confirm that everything is locally installed in our clean environemnt with:

    python -c 'import cowsay; print(cowsay.__file__)'
    which cowsay
    

    Per project usage

    In the previous section, we saw how to use pyenv in a global setup.

    However, what you usually want is to set a specific python and package version on a per-project basis. This is how to do it.

    First install your desired Python version as before.

    Then, from inside your project directory, set the desired python version with:

    pyenv local 3.8.0
    

    which creates a file .python-version containing the version string.

    And now let's install a package locally just for our project: TODO: there is no nice way it seems: Pyenv choose virtualenv directory

    Now, when someone wants to use your project, they will do:

    pyenv local
    

    which sets the Python version to the correct one.

    Related threads:

    • https://askubuntu.com/questions/682869/how-do-i-install-a-different-python-version-using-apt-get
    • https://unix.stackexchange.com/questions/9711/what-is-the-proper-way-to-manage-multiple-python-versions
    • apt-get install for different python versions

    Tested on Ubuntu 18.04, pyenv 1.2.15.

提交回复
热议问题