-->

unable to update python package psutil

2019-08-31 15:56发布

问题:

when i check the version of psutil in python it says i have version 0.5.0:

$ uname -a
Linux mypc 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> psutil.__version__
'0.5.0'
>>> psutil.virtual_memory()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'virtual_memory'
>>> psutil.__file__
'/usr/lib/pymodules/python2.7/psutil/__init__.pyc'

i want to upgrade to a newer version of psutil which has the virtual_memory() method:

$ sudo pip install 'psutil==2.2.1' --upgrade
Requirement already up-to-date: psutil==2.2.1 in /usr/local/lib/python2.7/dist-packages
Cleaning up...

the two different paths for the same package imply that psutil is installed twice:

/usr/local/lib/python2.7/dist-packages
/usr/lib/pymodules/python2.7/psutil/__init__.pyc

i only want psutil version 2.2.1. what is the best way to clean up the other unwanted 0.5.0 package and only keep this later one?


as per the comments - checking if either of the above paths were installed through dpkg:

$ dpkg -S /usr/local/lib/python2.7/dist-packages
dpkg-query: no path found matching pattern /usr/local/lib/python2.7/dist-packages
$ dpkg -S /usr/lib/pymodules/python2.7/psutil/__init__.pyc
dpkg-query: no path found matching pattern /usr/lib/pymodules/python2.7/psutil/__init__.pyc

回答1:

remove all versions of psutil and install 2.2.1 again:

$ sudo pip uninstall psutil
Uninstalling psutil:
  /usr/local/lib/python2.7/dist-packages/_psutil_linux.so
  /usr/local/lib/python2.7/dist-packages/_psutil_posix.so
  /usr/local/lib/python2.7/dist-packages/psutil
  /usr/local/lib/python2.7/dist-packages/psutil-2.2.1.egg-info
Proceed (y/n)? y
  Successfully uninstalled psutil
$ sudo apt-get remove --purge python-psutil
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  python-psutil*
0 upgraded, 0 newly installed, 1 to remove and 294 not upgraded.
After this operation, 215 kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 183978 files and directories currently installed.)
Removing python-psutil ...
Processing triggers for python-support ...
$ sudo pip install 'psutil==2.2.1'
Downloading/unpacking psutil==2.2.1
  Downloading psutil-2.2.1.tar.gz (223Kb): 223Kb downloaded
  Running setup.py egg_info for package psutil

    warning: no previously-included files matching '*' found under directory 'docs/_build'
Installing collected packages: psutil
  Running setup.py install for psutil
    building '_psutil_linux' extension
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DPSUTIL_VERSION=221 -I/usr/include/python2.7 -c psutil/_psutil_linux.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_linux.o
    gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/psutil/_psutil_linux.o -o build/lib.linux-x86_64-2.7/_psutil_linux.so
    building '_psutil_posix' extension
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c psutil/_psutil_posix.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o
    gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o -o build/lib.linux-x86_64-2.7/_psutil_posix.so

    warning: no previously-included files matching '*' found under directory 'docs/_build'
Successfully installed psutil
Cleaning up...
$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> psutil.__version__
'2.2.1'
>>> psutil.__file__
'/usr/local/lib/python2.7/dist-packages/psutil/__init__.pyc'