与将virtualenv路径置于$ PATH前面相比,virtualenv在隔离特定的python环境方面还能做更多的事情吗?
长版: 在Mac OSX 10.14上;使用python 3.5来实现PySpark兼容性。
通过brew install --override Python安装的系统python是这样的:
/usr/local/bin/python -> /Library/Frameworks/Python.framework/Versions/3.5/bin/python3
python --version
Python 3.5.4
创建了Virtual Env以使用此特定版本的python
virtualenv -p /Library/Frameworks/Python.framework/Versions/3.5/bin/python3 environment
source ./environment/bin/activate
python --version
Python 3.5.4
但是,我在使用pip时看到了完全不同的行为:
Collecting JayDeBeApi
Could not fetch URL https://pypi.python.org/simple/jaydebeapi/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:719) - skipping
Could not find a version that satisfies the requirement JayDeBeApi (from versions: )
No matching distribution found for JayDeBeApi
为TLS更新点后:
curl https://bootstrap.pypa.io/get-pip.py | python
然后我要安装的库(JayDeBeApi,JPype1)在虚拟环境中由于gcc错误而失败,但已成功安装在系统版本上。
From virtualenv:
pip install JayDeBeApi
fatal error: /Library/Developer/CommandLineTools/usr/bin/lipo: can't figure out the architecture type of: /var/folders/xn/qhw906zd77j7tv5sj0drpw9m0000gn/T//cc0FmpQW.out
error: command 'gcc-4.2' failed with exit status 1
通过系统python时,它已成功安装。
我的理解是,这是由于Xcode no longer supports gcc.而导致的,一种解决方法是使用系统安装的python。最好使用虚拟环境,那么这里还会发生什么呢?还有哪些其他实用程序(除pip之外)需要手动更新?