Zanurkuj w Pythonie/Testowanie modułów

Zainstalowane moduły edytuj

W konsoli wprowadź: [1]

 pydoc modules

przykładowy wynik:

Please wait a moment while I gather a list of all available modules...

/usr/lib/python2.7/dist-packages/variety/__init__.py:105: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk, Gdk, GObject # pylint: disable=E0611
/usr/lib/python2.7/dist-packages/variety/VarietyWindow.py:25: PyGIWarning: Notify was imported without specifying a version first. Use gi.require_version('Notify', '0.7') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk, Gdk, GdkPixbuf, GObject, Gio, Notify # pylint: disable=E0611
/usr/lib/python2.7/dist-packages/variety/AddPanoramioDialog.py:19: PyGIWarning: WebKit was imported without specifying a version first. Use gi.require_version('WebKit', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk, WebKit, GObject # pylint: disable=E0611
/usr/lib/python2.7/dist-packages/variety/QuoteWriter.py:19: PyGIWarning: PangoCairo was imported without specifying a version first. Use gi.require_version('PangoCairo', '1.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gdk, Pango, PangoCairo, GdkPixbuf, GObject
/usr/lib/python2.7/dist-packages/variety/indicator.py:28: PyGIWarning: AppIndicator3 was imported without specifying a version first. Use gi.require_version('AppIndicator3', '0.1') before import to ensure that the right version gets loaded.
  from gi.repository import AppIndicator3 # pylint: disable=E0611
BaseHTTPServer      _testcapi           gobject             re
Bastion             _threading_local    grp                 readline
CDROM               _version            gtk                 repr
CGIHTTPServer       _warnings           gtkunixprint        resource
Canvas              _weakref            gzip                rexec
ConfigParser        _weakrefset         hashlib             rfc822
Cookie              abc                 heapq               rlcompleter
DLFCN               aifc                hmac                robotparser
Dialog              alabaster           hotshot             roman
DocXMLRPCServer     antigravity         html5lib            runpy
FileDialog          anydbm              htmlentitydefs      sched
FixTk               argparse            htmllib             select
HTMLParser          array               httplib             sets
IN                  ast                 ihooks              sgmllib
Image               asynchat            image_geometry      sha
ImageChops          asyncore            imaplib             shelve
ImageColor          atexit              imghdr              shlex
ImageCrackCode      atk                 imp                 shutil
ImageDraw           audiodev            importlib           signal
ImageEnhance        audioop             imputil             site
ImageFile           babel               indicator_keyboard  sitecustomize
ImageFileIO         base64              inspect             six
ImageFilter         bdb                 io                  smtpd
ImageFont           binascii            itertools           smtplib
ImageGL             binhex              jinja2              sndhdr
ImageGrab           bisect              json                socket
ImageMath           bs4                 jumble              sphinx
ImageOps            bsddb               keyword             sphinx_rtd_theme
ImagePalette        bz2                 lib2to3             spwd
ImagePath           cPickle             libexiv2python      sqlite3
ImageQt             cProfile            linecache           sre
ImageSequence       cStringIO           linuxaudiodev       sre_compile
ImageStat           cairo               locale              sre_constants
ImageTk             calendar            logging             sre_parse
ImageWin            cgi                 lsb_release         ssl
MimeWriter          cgitb               lxml                stat
PIL                 chardet             macpath             statvfs
PSDraw              chunk               macurl2path         std_msgs
PngImagePlugin      cmath               mailbox             string
Queue               cmd                 mailcap             stringold
ScrolledText        code                markupbase          stringprep
SimpleDialog        codecs              markupsafe          strop
SimpleHTTPServer    codeop              marshal             struct
SimpleXMLRPCServer  collections         math                subprocess
SocketServer        colorsys            md5                 sunau
StringIO            commands            mhlib               sunaudio
TYPES               compileall          mimetools           symbol
Tix                 compiler            mimetypes           symtable
Tkconstants         configobj           mimify              sys
Tkdnd               contextlib          mmap                sysconfig
Tkinter             cookielib           modulefinder        syslog
UserDict            copy                multifile           tabnanny
UserList            copy_reg            multiprocessing     talloc
UserString          crypt               mutex               tarfile
_LWPCookieJar       csv                 netrc               telnetlib
_MozillaCookieJar   ctypes              new                 tempfile
__builtin__         curl                nis                 termios
__future__          curses              nntplib             test
_abcoll             cv                  ntpath              textwrap
_ast                cv2                 nturl2path          this
_bisect             cv_bridge           numbers             thread
_bsddb              datetime            numpy               threading
_codecs             dbhash              opcode              time
_codecs_cn          dbm                 opencv_apps         timeit
_codecs_hk          dbus                operator            tkColorChooser
_codecs_iso2022     debconf             optparse            tkCommonDialog
_codecs_jp          decimal             os                  tkFileDialog
_codecs_kr          difflib             os2emxpath          tkFont
_codecs_tw          dircache            ossaudiodev         tkMessageBox
_collections        dis                 pango               tkSimpleDialog
_csv                distutils           pangocairo          toaiff
_ctypes             doctest             parser              token
_ctypes_test        docutils            pdb                 tokenize
_curses             dsextras            pickle              trace
_curses_panel       dumbdbm             pickletools         traceback
_dbus_bindings      dummy_thread        pipes               ttk
_dbus_glib_bindings dummy_threading     pkg_resources       tty
_elementtree        email               pkgutil             turtle
_functools          encodings           platform            types
_hashlib            ensurepip           plistlib            unicodedata
_heapq              errno               popen2              unittest
_hotshot            exceptions          poplib              urllib
_io                 fcntl               posix               urllib2
_json               filecmp             posixfile           urlparse
_locale             fileinput           posixpath           user
_lsprof             fnmatch             pprint              uu
_md5                formatter           profile             uuid
_multibytecodec     fpectl              pstats              validate
_multiprocessing    fpformat            pty                 variety
_osx_support        fractions           pwd                 variety_lib
_pyio               ftplib              py_compile          warnings
_random             functools           pyclbr              wave
_sha                future_builtins     pycurl              weakref
_sha256             gc                  pydoc               webbrowser
_sha512             genericpath         pydoc_data          whichdb
_socket             genmsg              pyexiv2             wsgiref
_sqlite3            genpy               pyexpat             xdrlib
_sre                getopt              pygments            xml
_ssl                getpass             pygtk               xmllib
_strptime           gettext             pygtkcompat         xmlrpclib
_struct             gi                  pynotify            xxsubtype
_symtable           gio                 pytz                zipfile
_sysconfigdata      glib                quopri              zipimport
_sysconfigdata_nd   glob                random              zlib

Enter any module name to get more help.  Or, type "modules spam" to search
for modules whose descriptions contain the word "spam".


Testowanie modułów edytuj

Moduły Pythona to obiekty, które posiadają kilka przydatnych atrybutów. Możemy ich użyć do łatwego testowania własnych modułów. Oto przykład zastosowania triku if __name__:

if __name__ == "__main__":

Zwróćmy uwagę na dwie ważne sprawy: pierwsza, że instrukcja warunkowa if nie wymaga nawiasów, a druga, że if kończy się dwukropkiem, a w następnych liniach wstawiamy wcięty kod.

Na czym polega zastosowany trik? Moduły to obiekty, a każdy z nich posiada wbudowany atrybut __name__, który zależy od tego, w jaki sposób korzystamy z danego modułu. Jeżeli importujemy moduł, wtedy __name__ jest nazwą pliku modułu bez ścieżki do katalogu, czy rozszerzenia pliku. Możemy także uruchomić bezpośrednio moduł jako samodzielny program, a wtedy __name__ przyjmie domyślną wartość "__main__".

>>> import odbchelper
>>> odbchelper.__name__
'odbchelper'

Wiedząc o tym, możemy zaprojektować test wewnątrz swojego modułu, wykorzystując do tego instrukcję if. Jeśli uruchomisz bezpośrednio dany moduł, atrybut __name__ jest równy "__main__", a więc test zostanie wykonany. Podczas importu tego modułu, __name__ przyjmie inną wartość, więc test się nie uruchomi. Pomoże nam to rozwijać i wyszukiwać błędy w programie (czyli debugować), zanim dany moduł zintegrujemy z większym programem.

Materiały dodatkowe edytuj


Źródła edytuj

  1. stackoverflow question : how-can-i-get-a-list-of-locally-installed-python-modules