由于Python是模块化的,它在运行时加载共享对象。具体来说,直到" import ssl"才会加载SSL共享对象。命令执行。
我通过以下简单测试验证了这一点。 我运行python并检查是否加载了ssl共享对象:
vmmap 2287 | grep ssl
这产生了很大的输出。虽然,执行"导入ssl"。我得到了这个输出:
RegEPOSX2:~ root# vmmap 2287 | grep ssl
__TEXT 0000000107d83000-0000000107d8d000 [ 40K] r-x/rwx SM=COW /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_ssl.so
__LINKEDIT 0000000107d91000-0000000107d98000 [ 28K] r--/rwx SM=COW /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_ssl.so
__TEXT 00007fff8eca4000-00007fff8ecdd000 [ 228K] r-x/r-x SM=COW /usr/lib/libssl.0.9.8.dylib
__DATA 0000000107d8d000-0000000107d91000 [ 16K] rw-/rwx SM=COW /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_ssl.so
__DATA 00007fff97c14000-00007fff97c1a000 [ 24K] rw-/rwx SM=COW /usr/lib/libssl.0.9.8.dylib
我在另一个目录下有另一个ssl的共享对象:
RegEPOSX2:~ root# ls -l /Library/ithak
total 5768
lrwxr-xr-x 1 root wheel 15 Dec 6 10:14 libcrypto.0.9.8.dylib -> libcrypto.dylib
-r--r--r-- 1 root wheel 2547424 Dec 6 10:12 libcrypto.dylib
lrwxr-xr-x 1 root wheel 6 Dec 6 10:13 libssl.0.9.8.dylib -> libssl
-r--r--r-- 1 root wheel 396112 Dec 6 10:12 libssl.dylib
我试图让python使用这些共享对象而不用编译python(我不希望python一直使用它们)。
我已经尝试了以下但无济于事:
我一直看到在调用vmmap时加载了相同的ssl共享对象,而不是在调用vmmap时看到我的共享对象被加载。
还有什么我可以尝试的吗?