- Jak przez SSH sprawdzić dostępne moduły Python na serwerze w home.pl?
- Jak uruchamiać Pythona z poziomu skryptów bash oraz PHP?
- Jak sprawdzić wersję Pythona, z której został odpalony skrypt?
Na serwerach w home.pl możesz korzystać z Python 2.7 oraz w przypadku CRONA również z Python 3.7
W związku z powyższym w ramach mechanizmu CRON możesz zastosować dwa typy rozszerzeń: .py (Python w wersji 2.7) i .py3 (Python w wersji 3.7). Oznacza to, że pliki zakończone rozszerzeniem .py3 zostaną wykonane przez CRON z wykorzystaniem Python w wersji 3.7.
Natomiast za pośrednictwem SSH możesz wyświetlić moduły Python, które dostępne są na Twoim serwerze.
Jak przez SSH sprawdzić dostępne moduły Python na serwerze w home.pl?
- Połącz się ze swoim serwerem za pomocą SSH.
- Po wyświetleniu okna konsoli, skorzystaj z polecenia: python lub python2
- Następnie wpisz polecenie: help()
- Wpisz komendę: modules
- W oknie konsoli wyświetlone zostaną dostępne moduły Python na Twoim serwerze w home.pl.
Dostępne moduły Python na serwerach w home.pl
Crypto avahi imp queue Cryptodome base64 importlib quopri Milter bcrypt importlib_metadata random Namcap bdb inspect re PIL binascii invoke readline __future__ binhex io reprlib _abc bisect iotop requests _ast botan2 ipaddr resource _asyncio bottle ipaddress retrying _bisect btrfsutil itertools rlcompleter _blake2 builtins jinja2 runpy _bootlocale bz2 json salt _bz2 cProfile jsonschema sched _cffi_backend cachecontrol jwt secrets _codecs cached_property keyword select _codecs_cn calendar ldap selectors _codecs_hk cffi ldapurl semver _codecs_iso2022 cgi ldb setuptools _codecs_jp cgitb ldif sh _codecs_kr chardet lib2to3 shelve _codecs_tw chunk libfuturize shlex _collections cmath libmount shutil _collections_abc cmd libpasteurize signal _compat_pickle code libxml2 site _compression codecs libxml2mod six _contextvars codeop linecache slapdtest _crypt collections lirc smtpd _csv colorama locale smtplib _ctypes colorsys lockfile sndhdr _ctypes_test compileall logging socket _curses compose lxml socketserver _curses_panel conans lzma spwd _datetime concurrent macpath sqlalchemy _dbm configparser mailbox sqlite3 _decimal contextlib mailcap sqlparse _dummy_thread contextvars markerlib sre_compile _elementtree copy markupsafe sre_constants _ftdi1 copyreg marshal sre_parse _functools cpp math ssl _gdbm cppcheck_junit milter stat _hashlib crypt mime statistics _heapq cryptography mimetypes string _imp csv mmap stringprep _io ctypes modulefinder struct _json curses monotonic subprocess _ldap cycler more_itertools sunau _ldb_text dataclasses msgpack symbol _locale datetime multiprocessing symtable _lsprof dateutil nacl sys _lzma dbm namcap sysconfig _markupbase decimal netrc syslog _md5 deprecation nis tabnanny _multibytecodec difflib nntplib talloc _multiprocessing dis nose tarfile _opcode distlib nose_exclude tdb _operator distro ntpath telnetlib _osx_support distutils nturl2path tempfile _pickle django numbers termios _posixsubprocess dns numpy test _py_abc docker olefile tevent _pydecimal dockerpty opcode texttable _pyio dockerpycreds operator textwrap _pyrsistent_version docopt optparse this _queue doctest os threading _random drv_libxml2 ossaudiodev time _sha1 dummy_threading packaging timeit _sha256 easy_install paramiko tkinter _sha3 ecdsa parser token _sha512 elftools past tokenize _signal email patch_ng tqdm _sitebuiltins encodings pathlib trace _socket ensurepip pdb traceback _sqlite3 enum pep517 tracemalloc _sre errno pickle tty _ssl exitstatus pickletools turtle _stat fabfile pip turtledemo _string fabric pip2pkgbuild types _strptime fasteners pipes typing _struct faulthandler pkg_resources unicodedata _symtable fcntl pkgutil unittest _sysconfigdata_m_linux_x86_64-linux-gnu filecmp platform urllib _tdb_text fileinput plistlib urllib3 _testbuffer fnmatch pluginbase uu _testcapi formatter ply uuid _testimportmultiple fractions poplib venv _testmultiphase ftdi1 posix virtualenv _tevent ftplib posixpath virtualenv_support _thread functools postgresql warnings _threading_local future pprint wave _tkinter gc profile weakref _tracemalloc gcovr progress webbrowser _uuid genericpath pstats webencodings _warnings getopt pty websocket _weakref getpass pvectorc wheel _weakrefset gettext pwd wsgiref _xxtestfuzz glob py_compile wtforms _yaml gluster pyalpm xcbgen abc gnupg pyaml xdrlib aifc greenlet pyasn1 xml antigravity grp pyasn1_modules xmlrpc appdirs gzip pyclbr xxlimited argparse hashlib pycman xxsubtype array heapq pycparser yaml arrow hmac pydoc zipapp asn1crypto html pydoc_data zipfile ast html5lib pyexpat zipimport asynchat http pygments zipp asyncio httpie pymysql zlib asyncore idlelib pyparsing zmq atexit idna pyrsistent attr imaplib pytoml audioop imghdr pytz
Crypto arrow inspect requests Namcap asn1crypto io resource OleFileIO_PL ast iotop rlcompleter PIL asynchat ipaddress runpy __future__ asyncio isc sane _ast asyncore itertools sched _asyncio atexit jinja2 secrets _bisect audioop json select _blake2 avahi keyword selectors _bootlocale base64 lib2to3 setuptools _bz2 bdb libmount sh _cffi_backend binascii libxml2 shelve _codecs binhex libxml2mod shlex _codecs_cn bisect linecache shutil _codecs_hk builtins locale signal _codecs_iso2022 bz2 logging site _codecs_jp cProfile lxml six _codecs_kr calendar lzma smtpd _codecs_tw cffi macpath smtplib _collections cgi macurl2path sndhdr _collections_abc cgitb mailbox socket _compat_pickle chardet mailcap socketserver _compression chunk markerlib spwd _crypt cmath markupsafe sqlalchemy _csv cmd marshal sqlite3 _ctypes code math sre_compile _ctypes_test codecs matplotlib sre_constants _curses codeop mimetypes sre_parse _curses_panel collections mmap ssl _datetime colorsys modulefinder stat _dbm compileall multiprocessing statistics _decimal concurrent namcap string _dummy_thread configparser netrc stringprep _elementtree contextlib nis struct _ftdi1 copy nntplib subprocess _functools copyreg nose sunau _gdbm crypt nose_exclude symbol _hashlib cryptography ntpath symtable _heapq csv nturl2path sys _imp ctypes numbers sysconfig _io curses numpy syslog _json cycler olefile tabnanny _locale datetime opcode tarfile _lsprof dateutil operator telnetlib _lzma dbm optparse tempfile _markupbase decimal os termios _md5 difflib ossaudiodev test _multibytecodec dis packaging textwrap _multiprocessing distutils paramiko this _opcode django parser threading _operator doctest pathlib time _osx_support drv_libxml2 pdb timeit _pickle dummy_threading pickle tkinter _posixsubprocess easy_install pickletools token _pydecimal ecdsa pip tokenize _pyio elftools pip2pkgbuild trace _random email pipes traceback _sane encodings pkg_resources tracemalloc _sha1 ensurepip pkgutil tty _sha256 enum platform turtle _sha3 errno plistlib turtledemo _sha512 faulthandler ply types _signal fcntl poplib typing _sitebuiltins filecmp posix unicodedata _socket fileinput posixpath unittest _sqlite3 fnmatch postgresql urllib _sre formatter pprint urllib3 _ssl fractions profile uu _stat ftdi1 pstats uuid _string ftplib pty venv _strptime functools pwd virtualenv _struct gc py_compile virtualenv_support _symtable genericpath pyalpm warnings _sysconfigdata_m_linux_x86_64-linux-gnu getopt pyasn1 wave _testbuffer getpass pyclbr weakref _testcapi gettext pycman webbrowser _testimportmultiple glob pycparser wheel _testmultiphase grp pydoc wsgiref _thread gzip pydoc_data wtforms _threading_local hashlib pyexpat xcbgen _tkinter heapq pygments xdrlib _tracemalloc hmac pylab xml _warnings html pymysql xmlrpc _weakref http pyparsing xxlimited _weakrefset httpie pytz xxsubtype abc idlelib queue zipapp aifc idna quopri zipfile antigravity imaplib random zipimport appdirs imghdr re zlib argparse imp readline array importlib reprlib
Jak uruchamiać Pythona z poziomu skryptów bash oraz PHP?
W przypadku PHP należy dodać przed wywołaniem wiersz:
putenv("HOME=/");
Przykładowo:
putenv("HOME=/"); exec('python nazwa_skryptu.py);
W powyższym przykładowym kodzie możesz dodatkowo skorzystać z dwóch poleceń:
- python spowoduje użycie Python w wersji 3.6
- python2 spowoduje uzycie Python w wersji 2.7
export HOME="/"
Przykładowo:
export HOME="/" /usr/share/subversion/hook-scripts/mailer/mailer.py
Jak sprawdzić wersję Pythona, z której został odpalony skrypt?
Aby sprawdzić wersję Pythona, z której został odpalony skrypt:
- Utwórz nowy plik z rozszerzeniem .py, w którym umieścisz skrypt:
- dla Python 3
#!/usr/bin/python import sys print("Content-Type: text/html") # HTML print("") # pusta linia print("Witaj w swiecie Pythona") print(sys.version)
- dla Python 2
#!/usr/bin/python2 import sys print("Content-Type: text/html") # HTML print("") # pusta linia print("Witaj w swiecie Pythona") print(sys.version)
Ważne! Kodowanie znaków końca linii w pliku musi być w formacie Unix (LF = Line Feed). Skrypt nie uruchomi się przy kodowaniu znaków końca linii w formacie Windows (CR LF = Carriage Return + Line Feed). Konwersję znaku końca linii można wykonać w edytorze programistycznym.
- dla Python 3
- Wyślij plik na serwer FTP. Plik ze skryptem musi mieć uprawnienia do odczytu i uruchamiania 755 lub wyższe.
- Po wywołaniu tego pliku z poziomu przeglądarki internetowej, na ekranie zostanie wyświetlona wersja Pythona, która została użyta do wykonania skryptu.