1. python
http://docs.python.jp/index.html /pip
Letsencrypt を動かそうとして引っかかっているところ。
- python (2.7.10, 3.5.0) ともに、OpenSSL (LibreSSL) interface の pyOpenSSL-0.15.1でエラーになる。
-- ToshinoriMaeno 2015-11-18 09:51:57
/cryptographyかもしれない。 あるいはpythonの(実行時)ライブラリのpathか。
- ldconfig, ldd あたりを調べ直す。 (最近はLD_LIBRARY_PATHは指定しないようだ。)
cryptography のバージョンによるらしい。-- ToshinoriMaeno 2015-11-21 09:47:58
/usr/local/lib は最初に調べるらしいので、ld.so ではなさそう。
- pythonのimportを調べた方がよさそう。
-- ToshinoriMaeno 2015-11-18 23:17:42
1.1. virtualenv
anaconda 抜きでも進むようになったので、 virtualenvを入れてみる。
$ sudo easy_install virtualenv
Searching for virtualenv Reading https://pypi.python.org/simple/virtualenv/ Best match: virtualenv 13.1.2 Downloading https://pypi.python.org/packages/source/v/virtualenv/virtualenv-13.1.2.tar.gz#md5=b989598f068d64b32dead530eb25589a Processing virtualenv-13.1.2.tar.gz Writing /tmp/easy_install-7A7Omn/virtualenv-13.1.2/setup.cfg Running virtualenv-13.1.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-7A7Omn/virtualenv-13.1.2/egg-dist-tmp-t7k0dN warning: no previously-included files matching '*' found under directory 'docs/_templates' warning: no previously-included files matching '*' found under directory 'docs/_build' creating /usr/local/lib/python2.7/site-packages/virtualenv-13.1.2-py2.7.egg Extracting virtualenv-13.1.2-py2.7.egg to /usr/local/lib/python2.7/site-packages Adding virtualenv 13.1.2 to easy-install.pth file Installing virtualenv script to /usr/local/bin Installing virtualenv-2.7 script to /usr/local/bin Installed /usr/local/lib/python2.7/site-packages/virtualenv-13.1.2-py2.7.egg Processing dependencies for virtualenv Finished processing dependencies for virtualenv
1.2. OpenSSL
FreeBSD での問題 https://lists.freebsd.org/pipermail/freebsd-python/2015-January/007843.html
1.3. anaconda
ここを通過しても、virtualenvがどうなるかは不明だ。
- LibreSSLが関係している可能性もあるが。
$ openssl version LibreSSL 2.2.4
1.4. python3 + OpenSSL
pyOpenSSL-0.15.1 test
====================================================================== ERROR: OpenSSL (unittest.loader._FailedTest) ---------------------------------------------------------------------- ImportError: Failed to import test module: OpenSSL Traceback (most recent call last): File "/usr/local/lib/python3.5/unittest/loader.py", line 153, in loadTestsFromName module = __import__(module_name) File "/home/tmaeno/pyOpenSSL-0.15.1/OpenSSL/__init__.py", line 8, in <module> from OpenSSL import rand, crypto, SSL File "/home/tmaeno/pyOpenSSL-0.15.1/OpenSSL/rand.py", line 11, in <module> from OpenSSL._util import ( File "/home/tmaeno/pyOpenSSL-0.15.1/OpenSSL/_util.py", line 6, in <module> from cryptography.hazmat.bindings.openssl.binding import Binding File "/home/tmaeno/pyOpenSSL-0.15.1/.eggs/cryptography-1.1-py3.5-linux-i686.egg/cryptography/hazmat/bindings/openssl/binding.py", line 13, in <module> from cryptography.hazmat.bindings._openssl import ffi, lib ImportError: /home/tmaeno/pyOpenSSL-0.15.1/.eggs/cryptography-1.1-py3.5-linux-i686.egg/cryptography/hazmat/bindings/_openssl.cpython-35m-i386-linux-gnu.so: undefined symbol: EC_curve_nid2nist
1.5. cryptography がおかしいのか
test でもおなじsymbolを参照している。
_______________________ ERROR collecting tests/hazmat/primitives/test_rsa.py _______________________ tests/conftest.py:17: in pytest_generate_tests selected_backends = select_backends(names, _available_backends()) src/cryptography/hazmat/backends/__init__.py:27: in _available_backends "cryptography.backends" src/cryptography/hazmat/backends/__init__.py:26: in <listcomp> for ep in pkg_resources.iter_entry_points( /usr/local/lib/python3.5/site-packages/pkg_resources/__init__.py:2361: in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) src/cryptography/hazmat/backends/openssl/__init__.py:7: in <module> from cryptography.hazmat.backends.openssl.backend import backend src/cryptography/hazmat/backends/openssl/backend.py:43: in <module> from cryptography.hazmat.bindings.openssl import binding src/cryptography/hazmat/bindings/openssl/binding.py:13: in <module> from cryptography.hazmat.bindings._openssl import ffi, lib E ImportError: /home/tmaeno/cryptography/cryptography-master/src/cryptography/hazmat/bindings/_openssl.cpython-35m-i386-linux-gnu.so: undefined symbol: EC_curve_nid2nist
OpenSSL(LibreSSLではない)を使うようにしてみたら、
- gccがエラーを出して、コンパイルも中断された。これではpythonすら使えない。
-- ToshinoriMaeno 2015-11-18 11:05:17
LibreSSLに戻して、undefined symbol: EC_curve_nid2nist がでるところまで戻した。
- pyOpenSSL-0.15.1 か、 cryptographyのどちらかに問題がありそう。
-- ToshinoriMaeno 2015-11-18 11:09:59
python3対応かどうかの心配もする必要がありそう。 -- ToshinoriMaeno 2015-11-18 11:22:36