diff --git a/scrapy/commands/version.py b/scrapy/commands/version.py index a48e98f75..81433a657 100644 --- a/scrapy/commands/version.py +++ b/scrapy/commands/version.py @@ -3,6 +3,7 @@ import sys import platform import twisted +import OpenSSL import scrapy from scrapy.commands import ScrapyCommand @@ -26,11 +27,22 @@ class Command(ScrapyCommand): import lxml.etree lxml_version = ".".join(map(str, lxml.etree.LXML_VERSION)) libxml2_version = ".".join(map(str, lxml.etree.LIBXML_VERSION)) - print("Scrapy : %s" % scrapy.__version__) - print("lxml : %s" % lxml_version) - print("libxml2 : %s" % libxml2_version) - print("Twisted : %s" % twisted.version.short()) - print("Python : %s" % sys.version.replace("\n", "- ")) - print("Platform: %s" % platform.platform()) + print("Scrapy : %s" % scrapy.__version__) + print("lxml : %s" % lxml_version) + print("libxml2 : %s" % libxml2_version) + print("Twisted : %s" % twisted.version.short()) + print("Python : %s" % sys.version.replace("\n", "- ")) + print("pyOpenSSL : %s" % self._get_openssl_version()) + print("Platform : %s" % platform.platform()) else: print("Scrapy %s" % scrapy.__version__) + + def _get_openssl_version(self): + try: + openssl = OpenSSL.SSL.SSLeay_version(OpenSSL.SSL.SSLEAY_VERSION)\ + .decode('ascii', errors='replace') + # pyOpenSSL 0.12 does not expose openssl version + except AttributeError: + openssl = 'Unknown OpenSSL version' + + return '{} ({})'.format(OpenSSL.version.__version__, openssl)