Содержание
Поиск модуля в Python
Проверяем установлен ли модуль.
Для этого воспользуемся встроенным модулем imp
и его функцией find_module
:
$ pydoc imp.find_module .. imp.find_module = find_module(...) find_module(name, [path]) -> (file, filename, (suffix, mode, type)) Search for a module. If path is omitted or None, search for a built-in, frozen or special module and continue search in sys.path. The module name cannot contain '.'; to search for a submodule of a package, pass the submodule name and the package's __path__.
Создадим файл psutiltest.py
с таким содержимым:
#!/usr/bin/env python import imp mod = 'psutil' try: imp.find_module(mod) print 'nModule %s found.n' % (mod) except ImportError: print 'nERROR: can't find module %s!n' % (mod)
Запускаем:
$ ./psutiltest.py ERROR: can't find module psutil!
Хорошо, модуль не найден.
Для начала – проверим какие пути к библиотекам у нас используются. Для этого – используем модуль sys
и его функцию path
.
Добавляем в файл:
import sys print sys.path[1:]
Убираем из вывода элемент списка с индексом 0, т.к. в документации говорится, что:
As initialized upon program startup, the first item of this list, path[0], is the directory containing the script that was used to invoke the Python interpreter.
Запускаем скрипт – и получаем список директорий, в которых интерпретатор будет искать библиотеки модулей:
$ ./psutiltest.py ERROR: can't find module pynetstat! ['/usr/local/lib/python2.7/site-packages/Sphinx-1.2.2-py2.7.egg', '/usr/local/lib/python2.7/site-packages/Babel-1.3-py2.7.egg', '/usr/home/setevoy/scripts/python', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-freebsd9', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']
Установка модуля Python с помощью опции –preifx
Создаём свою директорию, в которую будем устанавливать новый модуль:
$ mkdir /home/setevoy/scripts/python/mylibs
Если нет переменной PYTHONPATH
– то создаём её в неё добавляем наш новый каталог:
$ cat ~/.bashrc | grep PYTHONPATH export PYTHONPATH="/home/setevoy/scripts/python/mylibs/lib/python2.7/site-packages/"
Перечитаем его:
$ . ~/.bashrc
Теперь – можно приступать к установке модуля.
Переходим в любой каталог, и загружаем архив:
$ cd ~/tmp/
$ wget --no-check-certificate https://pypi.python.org/packages/source/p/psutil/psutil-2.1.1.tar.gz --2014-05-05 18:41:30-- https://pypi.python.org/packages/source/p/psutil/psutil-2.1.1.tar.gz Resolving pypi.python.org (pypi.python.org)... 185.31.16.175 ... Saving to: 'psutil-2.1.1.tar.gz' 100%[============================================================================================================================================1.00MB/s in 0.2s 2014-05-05 18:41:31 (1.00 MB/s) - 'psutil-2.1.1.tar.gz' saved [216796/216796]
Распаковываем:
$ tar xfp psutil-2.1.1.tar.gz
$ ls -l total 216 drwxrwxr-x 7 setevoy setevoy 512 Apr 30 17:26 psutil-2.1.1 -rw-r--r-- 1 setevoy setevoy 216796 Apr 30 17:27 psutil-2.1.1.tar.gz
$ cd psutil-2.1.1
$ ls -l total 124 -rw-rw-r-- 1 setevoy setevoy 3793 Apr 29 22:17 CREDITS -rw-rw-r-- 1 setevoy setevoy 32402 Apr 30 17:26 HISTORY -rw-r--r-- 1 setevoy setevoy 1584 Apr 17 10:49 LICENSE -rw-r--r-- 1 setevoy setevoy 308 Apr 8 03:03 MANIFEST.in -rw-r--r-- 1 setevoy setevoy 1944 Apr 16 14:37 Makefile -rw-rw-r-- 1 setevoy setevoy 14092 Apr 30 17:26 PKG-INFO -rw-r--r-- 1 setevoy setevoy 9445 Apr 17 10:32 README -rw-r--r-- 1 setevoy setevoy 4843 Apr 21 20:19 TODO drwxrwxr-x 5 setevoy setevoy 512 Apr 30 17:26 docs drwxrwxr-x 2 setevoy setevoy 512 Apr 30 17:26 examples -rw-r--r-- 1 setevoy setevoy 5797 Apr 8 03:03 make.bat drwxrwxr-x 3 setevoy setevoy 1024 Apr 30 17:26 psutil drwxrwxr-x 2 setevoy setevoy 512 Apr 30 17:26 psutil.egg-info -rw-rw-r-- 1 setevoy setevoy 59 Apr 30 17:26 setup.cfg -rw-r--r-- 1 setevoy setevoy 6541 Apr 9 01:17 setup.py drwxrwxr-x 2 setevoy setevoy 512 Apr 30 17:26 test
И запускаем установку, с помощью --prefix
указав директорию, в которую будем устанавливать:
$ python setup.py install --prefix=/home/setevoy/scripts/python/mylibs
Редактируем наш файл – добавляем вызов psutil
:
#!/usr/bin/env python import psutil print psutil.cpu_times()
Запускаем:
$ ./psutiltest.py scputimes(user=269034.5234375, nice=240.390625, system=100019.34375, idle=7668215.40625, irq=38178.0625)
Установка модуля Python с помощью опции –user
По умолчанию для пользователя пусть для установки модулей задан как директория .local
в его домашней директории.
Проверить это можно с помощью модуля site
и функций getuserbase()
и getusersitepackages()
.
Изменим наш скрипт, добавим в него вызовы этих функций:
#!/usr/bin/env python import site print site.getuserbase() print site.getusersitepackages()
Запускаем:
$ ./psutiltest.py /home/setevoy/.local /home/setevoy/.local/lib/python2.7/site-packages
Теперь можно запускать установку с помощью опции --user
:
$ python setup.py install --user ... Installed /usr/home/setevoy/.local/lib/python2.7/site-packages/psutil-2.1.1-py2.7-freebsd-9.0-RELEASE-p3-i386.egg Processing dependencies for psutil==2.1.1 Finished processing dependencies for psutil==2.1.1
Готово.
Возможностей в Psutil много, смотрите документацию тут>>>.
И не забываем про возможно установки с помощью утилит типа pip – Python: утилита pip для установки пакетов из PyPI.
Ссылки по теме
https://docs.python.org
https://docs.python.org