问题描述
我按照您的RealPython教程在Debian 10 Buster上安装了Python 3.6.6。在make -j 8
之后运行python3.6 -m test
或make altinstall
时,它无法通过测试。
在test_ftplib.py
测试期间挂起,并且在进行Ctrl-C几次后,我得到了以下摘要:
Test suite interrupted by signal SIGINT.
158 tests omitted:
test_poplib test_posix test_posixpath test_pow test_pprint
test_print test_profile test_property test_pstats test_pty
test_pulldom test_pwd test_py_compile test_pyclbr test_pydoc
test_pyexpat test_queue test_quopri test_raise test_random
test_range test_re test_readline test_regrtest test_repl
test_reprlib test_resource test_richcmp test_rlcompleter
test_robotparser test_runpy test_sax test_sched test_scope
test_script_helper test_secrets test_select test_selectors
test_set test_setcomps test_shelve test_shlex test_shutil
test_signal test_site test_slice test_smtpd test_smtplib
test_smtpnet test_sndhdr test_socket test_socketserver test_sort
test_source_encoding test_spwd test_sqlite test_ssl test_startfile
test_stat test_statistics test_strftime test_string
test_string_literals test_stringprep test_strptime test_strtod
test_struct test_structmembers test_structseq test_subclassinit
test_subprocess test_sunau test_sundry test_super test_symbol
test_symtable test_syntax test_sys test_sys_setprofile
test_sys_settrace test_sysconfig test_syslog test_tarfile test_tcl
test_telnetlib test_tempfile test_textwrap test_thread
test_threaded_import test_threadedtempfile test_threading
test_threading_local test_threadsignals test_time test_timeit
test_timeout test_tix test_tk test_tokenize test_tools test_trace
test_traceback test_tracemalloc test_ttk_guionly test_ttk_textonly
test_tuple test_turtle test_typechecks test_typing test_ucn
test_unary test_unicode test_unicode_file
test_unicode_file_functions test_unicode_identifiers
test_unicodedata test_univnewlines test_unpack test_unpack_ex
test_urllib test_urllib2 test_urllib2_localnet test_urllib2net
test_urllib_response test_urllibnet test_urlparse test_userdict
test_userlist test_userstring test_utf8source test_uu test_uuid
test_venv test_wait3 test_wait4 test_warnings test_wave
test_weakref test_weakset test_webbrowser test_winconsoleio
test_winreg test_winsound test_with test_wsgiref test_xdrlib
test_xml_dom_minicompat test_xml_etree test_xml_etree_c
test_xmlrpc test_xmlrpc_net test_yield_from test_zipapp
test_zipfile test_zipfile64 test_zipimport test_zipimport_support
test_zlib
234 tests OK.
6 tests failed:
test_asyncio test_ftplib test_httplib test_imaplib test_logging
test_nntplib
9 tests skipped:
test_asdl_parser test_curses test_dbm_ndbm test_devpoll test_gdb
test_kqueue test_lzma test_msilib test_ossaudiodev
test_ftplib.py的特定错误是:
Exception in thread Thread-1104:Traceback (most recent call last):
File "/usr/local/lib/python3.6/threading.py",line 916,in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.6/test/test_poplib.py",line 223,in run
asyncore.loop(timeout=0.1,count=1)
File "/usr/local/lib/python3.6/asyncore.py",line 207,in loop
poll_fun(timeout,map)
File "/usr/local/lib/python3.6/asyncore.py",line 150,in poll
read(obj)
File "/usr/local/lib/python3.6/asyncore.py",line 87,in read
obj.handle_error()
File "/usr/local/lib/python3.6/asyncore.py",line 83,in read
obj.handle_read_event()
File "/usr/local/lib/python3.6/asyncore.py",line 417,in handle_read_event
self.handle_accept()
File "/usr/local/lib/python3.6/asyncore.py",line 494,in handle_accept
self.handle_accepted(*pair)
File "/usr/local/lib/python3.6/test/test_poplib.py",line 233,in handle_accepted
self.handler_instance = self.handler(conn)
File "/usr/local/lib/python3.6/test/test_poplib.py",line 384,in __init__
self.secure_connection()
File "/usr/local/lib/python3.6/test/test_ftplib.py",line 315,in secure_connection
context.load_cert_chain(CERTFILE)
ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee key too small (_ssl.c:3401)
我对“ ee key too small”错误进行了一些研究,发现了以下资源: https://github.com/debauchee/barrier/issues/126 https://github.com/jlaine/uvloop/commit/dd15259806727fa00a7169658171f06ef5d58d11
文件test_ftplib.py
使用测试证书Lib/test/keycert3.pem
和Lib/test/pycacert.pem
。两者都只有1024位证书,因此我尝试用新创建的3072位证书(openssl req -newkey rsa:3078 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
)替换它们,并通过了test_ftplib.py
。但是,许多其他与ssl相关的测试均失败。因此,我认为这是一条非生产性的方法。
我不确定如何从此处继续获取python3.6以通过我的计算机上的测试。如果您有任何建议,我将不胜感激。我需要python 3.6.6,因为我正在尝试使用apache在此生产计算机上部署django 3.0应用程序。我无法升级到python 3.7,因为我的应用使用了dlib,并且它与python 3.7不兼容。
谢谢!
标记
解决方法
不是最佳选择,但是如果您运行make altinstall并跳过make或使用选项,则可以绕过测试,并且仍会安装python二进制文件。
./ configure
进行altinstall