我需要确保我有1.0.1或更高版本的OpenSSL版本才能根据this documentation连接到Salesforce API。
根据this question,我可以执行以下步骤(我已成功完成)
当我运行openssl version -a
时,我得到以下内容:
OpenSSL 1.0.2h 3 May 2016
built on: reproducible build, date unspecified
platform: darwin64-x86_64-cc
options: bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: /usr/bin/clang -I. -I.. -I../include -fPIC -fno-common -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/opt/local/etc/openssl"
然而,当我运行python -c "import ssl; print ssl.OPENSSL_VERSION"
时,我得到以下内容:
OpenSSL 0.9.8zh 14 Jan 2016
我从我的计算机收到混合信号,但我的salesforce模块仍无法正常工作,所以我知道OpenSSL在我的计算机上没有完全更新。
我还应该提到我也尝试过:
sudo port upgrade openssl
Port似乎有效,但是当我运行python -c "import ssl; print ssl.OPENSSL_VERSION"
时,我仍然可以使用#34; OpenSSL 0.9.8zh"
还有其他方法可以更新OpenSSL吗?
答案 0 :(得分:6)
我认为这是您使用的Python版本和$PATH
变量的多部分问题。
首先在终端中使用此命令检查您在哪里寻找Python:
which python
它应输出如下内容:/usr/local/bin/python
然后检查您已设置的路径。
echo $PATH
可能你会看到类似的东西:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin
问题可能是当您在终端中输入python
时绑定到默认值的python版本不是具有现代版本openssl的版本。
换句话说:
openssl version -a
检查openssl是否与
不同python -c "import ssl; print ssl.OPENSSL_VERSION"
要解决此问题,您可以尝试修改$PATH
变量。
我建议您通过编辑类似~/.bash_profile
文件的内容来执行此操作。您可以添加类似这样的内容来指定要使用的不同Python二进制文件:
export PATH="/usr/local/bin:$PATH"
将此文件放在.bash_profile
文件的末尾,然后无论何时使用bash,它都应在/usr/local/bin
目录中查找Python,然后再查找其他文件。请记住,这可能也会影响其他程序查找Python(或其他二进制文件)的位置。
答案 1 :(得分:1)
/usr/local/bin
已经在我的$ PATH中首先出现了。以下是我修复我的方法:
在brew info python
的回复中,我看到了:
==> Caveats
This formula installs a python2 executable to /usr/local/bin.
If you wish to have this formula's python executable in your PATH then add the following to ~/.bash_profile:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
我在最后一行添加了~/.bash_profile
,打开了一个新的终端窗口,然后就可以了。