【问题标题】:Getting errors / failing tests when installing Python3.4.3 on Lubuntu 14.04在 Lubuntu 14.04 上安装 Python3.4.3 时出现错误/测试失败
【发布时间】:2015-04-27 02:29:16
【问题描述】:

我使用 VMplayer,我的操作系统是 Lubuntu 14.04。它预装了python3.4.0,但我想安装python3.4.3。我从here下载了.tar.xz 文件。

然后我提取了文件并按照自述文件中的说明进行操作:

./configure
make
make test

我最初跑的时候

make test

它说“3 个测试失败,3 个更改的执行环境和 25 个跳过”。我在这里发布了关于 SO 的问题: Installing Python3.4.3: 3 tests failed, 3 altered execution environment and 25 skipped

然后我做了

sudo apt-get install libssl-dev

做了

./configure
make

又说:

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel      
_dbm                  _gdbm                 _lzma              
_sqlite3              _tkinter              readline           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

现在我尝试了

make test

它说

1 test failed:
    test_ssl
2 tests altered the execution environment:
    test___all__ test_warnings
21 tests skipped:
    test_bz2 test_curses test_dbm_gnu test_dbm_ndbm test_devpoll
    test_gdb test_idle test_kqueue test_lzma test_msilib
    test_ossaudiodev test_readline test_sqlite test_startfile test_tcl
    test_tk test_ttk_guionly test_ttk_textonly test_winreg
    test_winsound test_zipfile64
Re-running failed tests in verbose mode
Re-running test 'test_ssl' in verbose mode
test_ssl: testing with 'OpenSSL 1.0.1f 6 Jan 2014' (1, 0, 1, 6, 15)
          under Linux ('debian', 'jessie/sid', '')
          HAS_SNI = True
          OP_ALL = 0x-7ffffc01
          OP_NO_TLSv1_1 = 0x10000000
test__create_stdlib_context (test.test_ssl.ContextTests) ... ok
test_cert_store_stats (test.test_ssl.ContextTests) ... ok
test_check_hostname (test.test_ssl.ContextTests) ... ok
test_ciphers (test.test_ssl.ContextTests) ... ok
test_constructor (test.test_ssl.ContextTests) ... ok
test_create_default_context (test.test_ssl.ContextTests) ... ok
test_get_ca_certs (test.test_ssl.ContextTests) ... ok
test_load_cert_chain (test.test_ssl.ContextTests) ... ok
test_load_default_certs (test.test_ssl.ContextTests) ... ok
test_load_default_certs_env (test.test_ssl.ContextTests) ... ok
test_load_default_certs_env_windows (test.test_ssl.ContextTests) ... skipped 'Windows specific'
test_load_dh_params (test.test_ssl.ContextTests) ... ok
test_load_verify_cadata (test.test_ssl.ContextTests) ... ok
test_load_verify_locations (test.test_ssl.ContextTests) ... ok
test_options (test.test_ssl.ContextTests) ... ok
test_protocol (test.test_ssl.ContextTests) ... ok
test_session_stats (test.test_ssl.ContextTests) ... ok
test_set_default_verify_paths (test.test_ssl.ContextTests) ... ok
test_set_ecdh_curve (test.test_ssl.ContextTests) ... ok
test_sni_callback (test.test_ssl.ContextTests) ... ok
test_sni_callback_refcycle (test.test_ssl.ContextTests) ... ok
test_verify_flags (test.test_ssl.ContextTests) ... ok
test_verify_mode (test.test_ssl.ContextTests) ... ok
test_DER_to_PEM (test.test_ssl.BasicSocketTests) ... ok
test_asn1object (test.test_ssl.BasicSocketTests) ... ok
test_constants (test.test_ssl.BasicSocketTests) ... ok
test_dealloc_warn (test.test_ssl.BasicSocketTests) ... ok
test_enum_certificates (test.test_ssl.BasicSocketTests) ... skipped 'Windows specific'
test_enum_crls (test.test_ssl.BasicSocketTests) ... skipped 'Windows specific'
test_errors (test.test_ssl.BasicSocketTests) ... ok
test_get_default_verify_paths (test.test_ssl.BasicSocketTests) ... ok
test_match_hostname (test.test_ssl.BasicSocketTests) ... ok
test_openssl_version (test.test_ssl.BasicSocketTests) ... ok
test_parse_cert (test.test_ssl.BasicSocketTests) ... 
{'issuer': ((('countryName', 'XY'),),
            (('localityName', 'Castle Anthrax'),),
            (('organizationName', 'Python Software Foundation'),),
            (('commonName', 'localhost'),)),
 'notAfter': 'Oct  5 23:01:56 2020 GMT',
 'notBefore': 'Oct  8 23:01:56 2010 GMT',
 'serialNumber': 'D7C7381919AFC24E',
 'subject': ((('countryName', 'XY'),),
             (('localityName', 'Castle Anthrax'),),
             (('organizationName', 'Python Software Foundation'),),
             (('commonName', 'localhost'),)),
 'subjectAltName': (('DNS', 'localhost'),),
 'version': 3}

{'OCSP': ('http://ocsp.verisign.com',),
 'caIssuers': ('http://SVRIntl-G3-aia.verisign.com/SVRIntlG3.cer',),
 'crlDistributionPoints': ('http://SVRIntl-G3-crl.verisign.com/SVRIntlG3.crl',),
 'issuer': ((('countryName', 'US'),),
            (('organizationName', 'VeriSign, Inc.'),),
            (('organizationalUnitName', 'VeriSign Trust Network'),),
            (('organizationalUnitName',
              'Terms of use at https://www.verisign.com/rpa (c)10'),),
            (('commonName', 'VeriSign Class 3 International Server CA - G3'),)),
 'notAfter': 'Sep 20 23:59:59 2012 GMT',
 'notBefore': 'Sep 21 00:00:00 2011 GMT',
 'serialNumber': '2EE6EA7640A075CEE5005F4D7C79549A',
 'subject': ((('countryName', 'FI'),),
             (('stateOrProvinceName', 'Espoo'),),
             (('localityName', 'Espoo'),),
             (('organizationName', 'Nokia'),),
             (('organizationalUnitName', 'BI'),),
             (('commonName', 'projects.developer.nokia.com'),)),
 'subjectAltName': (('DNS', 'projects.developer.nokia.com'),
                    ('DNS', 'projects.forum.nokia.com')),
 'version': 3}
ok
test_parse_cert_CVE_2013_4238 (test.test_ssl.BasicSocketTests) ... 
{'issuer': ((('countryName', 'US'),),
            (('stateOrProvinceName', 'Oregon'),),
            (('localityName', 'Beaverton'),),
            (('organizationName', 'Python Software Foundation'),),
            (('organizationalUnitName', 'Python Core Development'),),
            (('commonName', 'null.python.org\x00example.org'),),
            (('emailAddress', 'python-dev@python.org'),)),
 'notAfter': 'Aug  7 13:12:52 2013 GMT',
 'notBefore': 'Aug  7 13:11:52 2013 GMT',
 'serialNumber': '00',
 'subject': ((('countryName', 'US'),),
             (('stateOrProvinceName', 'Oregon'),),
             (('localityName', 'Beaverton'),),
             (('organizationName', 'Python Software Foundation'),),
             (('organizationalUnitName', 'Python Core Development'),),
             (('commonName', 'null.python.org\x00example.org'),),
             (('emailAddress', 'python-dev@python.org'),)),
 'subjectAltName': (('DNS', 'altnull.python.org\x00example.com'),
                    ('email', 'null@python.org\x00user@example.org'),
                    ('URI', 'http://null.python.org\x00http://example.org'),
                    ('IP Address', '192.0.2.1'),
                    ('IP Address', '2001:DB8:0:0:0:0:0:1\n')),
 'version': 3}
ok
test_purpose_enum (test.test_ssl.BasicSocketTests) ... ok
test_random (test.test_ssl.BasicSocketTests) ... 
 RAND_status is 1 (sufficient randomness)
ok
test_random_fork (test.test_ssl.BasicSocketTests) ... ok
test_refcycle (test.test_ssl.BasicSocketTests) ... ok
test_server_side (test.test_ssl.BasicSocketTests) ... ok
test_timeout (test.test_ssl.BasicSocketTests) ... ok
test_tls_unique_channel_binding (test.test_ssl.BasicSocketTests) ... ok
test_unknown_channel_binding (test.test_ssl.BasicSocketTests) ... ok
test_unsupported_dtls (test.test_ssl.BasicSocketTests) ... ok
test_wrapped_unconnected (test.test_ssl.BasicSocketTests) ... ok
test_lib_reason (test.test_ssl.SSLErrorTests) ... ok
test_str (test.test_ssl.SSLErrorTests) ... ok
test_subclass (test.test_ssl.SSLErrorTests) ... ok
test_algorithms (test.test_ssl.NetworkedTests) ... 
Cipher with ('sha256.tbs-internet.com', 443) is ('RC4-SHA', 'TLSv1/SSLv3', 128)
Certificate is:
{'OCSP': ('http://ocsp.tbs-x509.com',),
 'caIssuers': ('http://crt.tbs-internet.com/TBSX509CASGC.crt',
               'http://crt.tbs-x509.com/TBSX509CASGC.crt'),
 'crlDistributionPoints': ('http://crl.tbs-internet.com/TBSX509CASGC.crl',
                           'http://crl.tbs-x509.com/TBSX509CASGC.crl'),
 'issuer': ((('countryName', 'FR'),),
            (('stateOrProvinceName', 'Calvados'),),
            (('localityName', 'Caen'),),
            (('organizationName', 'TBS INTERNET'),),
            (('organizationalUnitName',
              'Terms and Conditions: '
              'http://www.tbs-internet.com/CA/repository'),),
            (('organizationalUnitName', 'TBS INTERNET CA'),),
            (('commonName', 'TBS X509 CA SGC'),)),
 'notAfter': 'Feb 17 23:59:59 2016 GMT',
 'notBefore': 'Feb 11 00:00:00 2014 GMT',
 'serialNumber': '1F94DEE8F046B340A6026500A4002CF8',
 'subject': ((('countryName', 'FR'),),
             (('postalCode', '14000'),),
             (('stateOrProvinceName', 'Calvados'),),
             (('localityName', 'CAEN'),),
             (('streetAddress', '22 RUE DE BRETAGNE'),),
             (('organizationName', 'TBS INTERNET'),),
             (('organizationalUnitName', '0002 440443810'),),
             (('organizationalUnitName', 'sha-256 production'),),
             (('commonName', 'sha256.tbs-internet.com'),)),
 'subjectAltName': (('DNS', 'sha256.tbs-internet.com'),
                    ('DNS', 'www.sha256.tbs-internet.com')),
 'version': 3}
ok
test_ciphers (test.test_ssl.NetworkedTests) ... ok
test_connect (test.test_ssl.NetworkedTests) ... ok
test_connect_cadata (test.test_ssl.NetworkedTests) ... ok
test_connect_capath (test.test_ssl.NetworkedTests) ... ok
test_connect_ex (test.test_ssl.NetworkedTests) ... ok
test_connect_ex_error (test.test_ssl.NetworkedTests) ... ok
test_connect_with_context (test.test_ssl.NetworkedTests) ... ERROR
/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/unittest/case.py:605: ResourceWarning: unclosed <ssl.SSLSocket fd=4, family=AddressFamily.AF_INET, type=2049, proto=0, laddr=('192.168.174.253', 37135), raddr=('82.94.164.164', 443)>
  outcome.errors.clear()
test_context_setget (test.test_ssl.NetworkedTests) ... ok
test_get_ca_certs_capath (test.test_ssl.NetworkedTests) ... ok
test_get_server_certificate (test.test_ssl.NetworkedTests) ... [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

Verified certificate for svn.python.org:443 is
-----BEGIN CERTIFICATE-----
MIIEzzCCAregAwIBAgIDDkGJMA0GCSqGSIb3DQEBBQUAMHkxEDAOBgNVBAoTB1Jv
b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ
Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y
dEBjYWNlcnQub3JnMB4XDTEzMTIyNDIwMjgzMloXDTE1MTIyNDIwMjgzMlowGTEX
MBUGA1UEAxMOc3ZuLnB5dGhvbi5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDM6un3wTW9+HVJ7KC+/GwL0KAxehug0tw2YoSSX+TGxLyr9AUtBHQk
hCNWhRLewa0WMOY6hxIIQY1Hp6vreDiCbBehjVkEAydlKBzaAsgYCEbCC/ZaMzhv
aaFAiLVeaxAKJsBGUJNz5hGgzd67A6SGz+XK7qDWig4NR5eFrsr3DvjyEM7txMiG
gftGWLkadOuqUQsI20AykBGi+RxmrQIwqO2svGmje89DsWVILdP37PssM2zqRonh
4fUKooei3L43tXbTdHayXc9NtFS7q8T4eUlyWaD+BtP80QQOQFFvi+qZpme9bmYI
7YPX+e86lZtxAKM9nWrP93qc+2nS0MsHAgMBAAGjgb8wgbwwDAYDVR0TAQH/BAIw
ADAOBgNVHQ8BAf8EBAMCA6gwNAYDVR0lBC0wKwYIKwYBBQUHAwIGCCsGAQUFBwMB
BglghkgBhvhCBAEGCisGAQQBgjcKAwMwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUF
BzABhhdodHRwOi8vb2NzcC5jYWNlcnQub3JnLzAxBgNVHR8EKjAoMCagJKAihiBo
dHRwOi8vY3JsLmNhY2VydC5vcmcvcmV2b2tlLmNybDANBgkqhkiG9w0BAQUFAAOC
AgEAvq2TlM5voqqwlfbEIwdNM3RlqHattH/h2Pqkr5FV6nynhcNyP9wBJyS5mdlt
+tj1Fy6oV+iN0s8VglrwhsmYN2pbJkCJZcNgrhFTiOvZ3HJ0jxkQ8TaROfcH1RnZ
q45DcbSnryiIDBQNYxmUf/bE6Ce+48fiOJpTRtrC8iWfz4J/JHYZ5FVKx+SsC67o
E1iCT2/r1PSvzTg/bohL1kX6Aj3H3UqlXDuDybyHRrTn9kUwCgXK2h4x/qae6xjo
Gy++gtzg4XlJEAh65znJ2RlAYi3lvhCls+viR5vSIXBEXmBPFNonGnPtGRyx6Tii
5ncSUP+bp6aaRZb0qEi0k1R5XYPt5Hm7T/h4IOAKlx7gPMMLOXqbrlWpjgwhfysI
f/KkgGBq7nTsC6WeaW/QUQtdXqWULrK+nINY+s/CRX5UxdAWpqMxqgNkP3zef9yO
etgfpR+6NArjiLNcfJO2yGZTcXn1H2gewTcxwmc+QVWday9HcS3paMpot8BwWUpI
LzOLGTeNH+rQCUAKJHAiK3Ogee+hka4icIN7cKOIIVfZ/XBj1Ex7zjc3j72axNba
S1buqvrm12YCE5+xAjYwU/Nrl4HNFKCoPW7qfEaEuwp49pieAIOnXa82rCh/UdAv
dSj5JpEvxjTuZdVfbk2VUc/z2OeLzFlrQRJsOt1MisY0Aoc=
-----END CERTIFICATE-----

skipped "Resource 'ipv6.google.com' is not available"
test_makefile_close (test.test_ssl.NetworkedTests) ... ok
test_non_blocking_connect_ex (test.test_ssl.NetworkedTests) ... ok
test_non_blocking_handshake (test.test_ssl.NetworkedTests) ... 
Needed 3 calls to do_handshake() to establish session.
ok
test_timeout_connect_ex (test.test_ssl.NetworkedTests) ... ok
test_asyncore_server (test.test_ssl.ThreadedTests)
Check the example asyncore integration. ... 
 server:  new connection from 127.0.0.1:57771
 client:  sending b'FOO\n'...
 server:  read b'FOO\n' from client
 client:  read b'foo\n'
 client:  closing connection.
 client:  connection closed.
 cleanup: stopping server.
 cleanup: joining server thread.
 server:  read b'over\n' from client
 server:  closed connection <ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=2049, proto=0>
 server:  read b'' from client
 cleanup: successfully joined.
ok
test_check_hostname (test.test_ssl.ThreadedTests) ... 
 server:  new connection from ('127.0.0.1', 47566)
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 server:  new connection from ('127.0.0.1', 47927)
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
ok
test_compression (test.test_ssl.ThreadedTests) ...  server:  new connection from ('127.0.0.1', 44281)
 client:  sending b'FOO\n'...
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  closing connection.
 got compression: None
ok
test_compression_disabled (test.test_ssl.ThreadedTests) ...  server:  new connection from ('127.0.0.1', 44325)
 client:  sending b'FOO\n'...
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  closing connection.
ok
test_crl_check (test.test_ssl.ThreadedTests) ... 
 server:  new connection from ('127.0.0.1', 42401)
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 server:  new connection from ('127.0.0.1', 39995)

 server:  bad connection attempt from ('127.0.0.1', 39995):
Traceback (most recent call last):
   File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/test/test_ssl.py", line 1532, in wrap_conn
    self.sock, server_side=True)
   File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/ssl.py", line 365, in wrap_socket
    _context=self)
   File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/ssl.py", line 583, in __init__
    self.do_handshake()
   File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/ssl.py", line 810, in do_handshake
    self._sslobj.do_handshake()
 ssl.SSLError: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:600)
 server:  new connection from ('127.0.0.1', 55142)
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
ok
test_default_ciphers (test.test_ssl.ThreadedTests) ... ok
test_default_ecdh_curve (test.test_ssl.ThreadedTests) ...  server:  new connection from ('127.0.0.1', 49676)
 server: connection cipher is now ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
ok
test_dh_params (test.test_ssl.ThreadedTests) ...  server:  new connection from ('127.0.0.1', 45312)
 client:  sending b'FOO\n'...
 server: connection cipher is now ('DHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  closing connection.
ok
test_do_handshake_enotconn (test.test_ssl.ThreadedTests) ... ok
test_echo (test.test_ssl.ThreadedTests)
Basic test of an SSL client connecting to a server ... 
 server:  new connection from ('127.0.0.1', 60169)
 client:  sending b'FOO\n'...
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  closing connection.
 server:  new connection from ('127.0.0.1', 57455)
 client:  sending b'FOO\n'...
 server: connection cipher is now ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  closing connection.
 server:  new connection from ('127.0.0.1', 54910)
 client:  sending b'FOO\n'...
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
 server: selected protocol is now None
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  sending b'FOO\n'...
 client:  read b'foo\n'
 client:  closing connection.
 server:  new connection from ('127.0.0.1', 44655)
 client:  sending b'FOO\n'...
 server: connection cipher is now ('ECDHE-RSA-AES256-SHA', 'TLSv1/SSLv3', 256)
======================================================================
ERROR: test_connect_with_context (test.test_ssl.NetworkedTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/test/test_ssl.py", line 1285, in test_connect_with_context
    s.connect(("svn.python.org", 443))
  File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/ssl.py", line 846, in connect
    self._real_connect(addr, False)
  File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/ssl.py", line 837, in _real_connect
    self.do_handshake()
  File "/home/a/Downloads/python3.4.3/Python-3.4.3/Lib/ssl.py", line 810, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:600)

----------------------------------------------------------------------
Ran 99 tests in 85.177s

FAILED (errors=1, skipped=5)
test test_ssl failed
make: *** [test] Error 1

中间还有一些代码,但我删除了它,因为它会超出正文限制。尽管如此,最主要的是,1 个测试失败,2 个测试改变了执行环境,21 个测试被跳过。

知道为什么即使我遵循the Python downloads page 上的确切步骤,我还是会失败并跳过测试?有没有更简单的方法在我的操作系统上安装 Python3.4.3?

【问题讨论】:

  • 为什么从源代码构建?为什么不] t apt-get install python3 ?
  • @AndyHayden 如果我使用 apt-get 会完全一样吗?我只是用谷歌搜索“如何下载 python 3.4.3”,第一个链接是 python 网站 (python.org/downloads),它有“下载 python 3.4.3”按钮。我点击了它,下载了文件,然后按照自述文件中的说明进行操作。我从来不知道按照 Python 网站给出的说明会遇到问题。
  • 如果你使用的是 (L)ubuntu,你应该使用 apt-get。如果您已经下载了二进制文件(例如来自 python.org 的 .deb),那么您不需要 make(只有当您从源代码构建时才需要 - 您不是)...

标签: python installation ubuntu-14.04 python-3.4


【解决方案1】:

解决 OP 问题

从测试 Python 已经构建好。 "Python build finished successfully!" 缺少模块是因为您的计算机上没有安装相关软件。

这与使用 apt-get 没有什么不同,例如您缺少 _tkinter 这是因为您没有运行它所需的软件包。因此,如果您使用apt-get,则必须使用apt-get install python-tk,以便apt-get 引入相关的依赖项。逻辑是,如果您没有安装软件,则不需要模块来对其进行编程。

我可以看到make tests 的唯一问题是ssl 失败。

1 test failed:
    test_ssl

往下看你会看到的测试结果:-

test_ssl: testing with 'OpenSSL 1.0.1f 6 Jan 2014' (1, 0, 1, 6, 15)
      under Linux ('debian', 'jessie/sid', '')
      HAS_SNI = True
      OP_ALL = 0x-7ffffc01
      OP_NO_TLSv1_1 = 0x10000000

此版本的 OpenSSL 包含去年发现并在 OpenSSL 1.0.1j [2014 年 10 月 15 日] 中修复的 SSL 协议漏洞。您可以找到此信息here

我在使用 Fedora 时对 Ubuntu 不太熟悉,但你可以试试:-

apt-get update
apt-get dist-upgrade

看看这是否修复了您计算机的 SSL 漏洞。


从源安装

附带说明,如果您希望为您使用的系统以外的系统开发 Python 应用程序,那么从源代码安装是唯一的方法。

tar.gz 编译有很多充分的理由。

  1. 大多数 Linux 发行版在内部使用 Python,因此链接到一个版本。

  2. 您可能会在导入的模块之间发生冲突。

  3. 您可以针对不同版本的 python 测试您的代码。

  4. 您不需要 root 权限来设置自己的版本,因此您所做的事情与操作系统需要的任何东西无关。


所以对于这个例子,我的家是/home/paul,我已经在我家的根目录中创建了目录。一个调用src 将用作源目录,另一个调用opt 将保存我的Python 版本。

诀窍是告诉 Python 安装的去向。所以把tar.gz文件放到src目录下,展开。打开终端并...

cd ~/src/Python-X.X.X
./configure --prefix=/home/paul/opt/python.x.x.x
make
make test <optional>
make install 

请注意,我从未使用过sudo,因为我拥有我的主目录的权限,并且我不会影响系统上的任何其他内容。

现在开始测试...

~/opt/python.3.4.2/bin/python3
Python 3.4.2 (default, Mar 28 2015, 19:36:24) 
[GCC 4.9.2 20150212 (Red Hat 4.9.2-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

随着新版本的出现,您可以继续添加测试版本,只需记住通过指向您要使用的版本来启动您的代码。

【讨论】:

  • @ReculsizeGeek 您提到“附带说明,如果您希望为您使用的系统以外的系统开发 Python 应用程序,那么从源代码安装是唯一的方法。”。这样,您的意思是使用 .tar.xz 文件安装是可行的方法并且比使用 apt-get 安装它更好吗?如果是,怎么会?
  • 是的,从 .tar.gz 安装是可行的方法......将发布原因作为答案,因为它需要一些解释。
  • @ReclusizeGeek 顺便说一句,因为它说“未找到构建这些可选模块的必要位:_bz2 _curses _curses_panel _dbm _gdbm _lzma _sqlite3 _tkinter readline”。这是否意味着如果我执行“sudo make install”,那么 python 3.4.3 将无法正确安装,因为没有找到那些必要的位?在我按照 Python 网站 / README 文件中的说明进行操作后,我觉得很奇怪,它基本上说“除了这些必要的位之外,Python 已安装”。从长远来看,没有这些必要的部分对我有何影响?
  • @ReclusizeGeek 也是,我做了 apt-get update 和 apt-get dist-upgrade ,它仍然给出相同的测试失败、更改和跳过。我还有其他选择来安装 Python 3.4.3 吗?似乎遵循 Python 指令并从源代码构建不会失败/更改/跳过测试。
  • @user2719875 不要担心“_bz2 _curses _curses_panel _dbm _gdbm _lzma _sqlite3 _tkinter readline”,唯一真正担心的是 SSL 错误,但这不会阻止您测试构建。您是否在 configure 上设置了选项“--prefix”? ...如果不只是使用上面的说明并在您的家庭驱动器中进行构建。不要担心 make 测试或任何其他错误,看看构建是否有效。让我知道你过得怎么样。
【解决方案2】:

此命令将引入必要的依赖项以从源代码构建 python 3.4:

sudo apt-get build-dep python3.4

还可以考虑通过 pyenv 安装以避免与操作系统产生冲突。你可以在这里找到安装说明:http://davebehnke.com/python-pyenv-ubuntu.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2023-03-31
    • 2015-06-08
    • 1970-01-01
    相关资源
    最近更新 更多