Python: select one of multiple installed module versions

后端 未结 4 1346
旧巷少年郎
旧巷少年郎 2020-12-05 04:41

On my system, I have several modules installed multiple times. To give an example, numpy 1.6.1 is installed in the standard path at /usr/lib/python2.7/dis

相关标签:
4条回答
  • 2020-12-05 05:01

    I had the same issue on Debian Wheezy after installing the latest numpy module with easy_install.

    The new numpy module was installed in /usr/local/lib/python2.7/dist-packages/numpy while the old module was in /usr/lib/pymodules/python2.7/numpy. When I tried to import the numpy module, the older version was imported. And as you say, adding to PYTHONPATH the new module path does not help, because is added in the sys.path below the older entry.

    The issue seem to be in easy-install, because it creates a file easy-install.pth that imports /usr/lib/pymodules/python2.7 before any local module.

    To fix the issue I just edited the file /usr/local/lib/python2.7/dist-packages/easy-install.pth and commented out the line /usr/lib/pymodules/python2.7 so this line will be placed below in the sys.path.

    0 讨论(0)
  • 2020-12-05 05:07

    Besides the suggestions already given in the comment section, have you thought about using virtualenv? This would give you fine-grained control over every module that you want to use. If you're not familiar with virtualenv you'll want to read the documentation to get a feel for how it works.

    Purely for example, you could install and set it up, like so (virtualenv-1.11.6 looks to be the most recent version currently):

    $ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.11.6.tar.gz
    $ tar xvfz virtualenv-1.11.6.tar.gz
    $ cd virtualenv-1.11.6
    $ python virtualenv.py ../numpyvenv
    $ cd ../numpyvenv
    $ source ./bin/activate
    (numpyvenv) $ pip install numpy
    # downloads, compiles, and installs numpy into the virtual environemnt
    (numpyvenv) $ python
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import numpy
    >>> numpy.version.version
    '1.9.1'
    >>> quit()
    (numpyvenv) $ deactivate
    $ # the virtual environment has been deactivated
    

    Above, we created a virtual environment named "numpyvenv", activated the environment, installed numpy, printed the numpy version (to show it works), quit python, and deactivated the environment. Next time you activate the environment, numpy will be there along with whatever other modules you install. You may run into hiccups while trying this, but it should get you started.

    0 讨论(0)
  • 2020-12-05 05:15

    While a virtualenv seems the way to go, as of Force python to use an older version of module (than what I have installed now) you can also use a modification of

    import pkg_resources
    pkg_resources.require("Twisted==8.2.0")
    import twisted
    
    0 讨论(0)
  • 2020-12-05 05:25

    I had this problem on a Mac I was using without administrator access. My solution was the following:

    1. Find the directory of the numpy version you want to use. For me this was /Library/Python/2.7/site-packages

    2. Create a file ~/.startup.py and point to it with PYTHONSTARTUP=~/.startup.py in your .bashrc file

    3. In .startup.py:

    import sys

    sys.path.insert(0,'/Library/Python/2.7/site-packages/') <--- imports this BEFORE the standard parts

    import numpy

    print("Importing numpy version"+numpy.__version__) <---- To remind that we have changed the numpy version

    This seems to work fine for me. I hope it helps.

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