如果能够使用系统的目录,那么直接使用系统的最好,如果系统没有,而且又没有 root 权限来安装到系统,这时候需要自己编译相关第三方库。
以安装 cryptograph
为例(参考自 cryptograph 官方手册)。
cryptograph 依赖 openssl,此时可将 openssl 安装为静态依赖(即安装到某个指定的目录,比如你的virtaulenv工程目录),查看 openssl 官网 找到某个版本,这里使用1.0.2k
。
set -e
workon myvirtualenvwrapper-project
mkdir -p build
cd build
OPENSSL_VERSION="1.0.2k"
CWD=$(pwd)
pip install -U setuptools
pip install -U wheel pip
curl -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz
tar xvf openssl-${OPENSSL_VERSION}.tar.gz
cd openssl-${OPENSSL_VERSION}
./config no-shared no-ssl2 no-ssl3 -fPIC --prefix=${CWD}/openssl
make && make install
cd ..
LIBFFI_VERSION="3.2.1"
wget ftp://sourceware.org/pub/libffi/libffi-${LIBFFI_VERSION}.tar.gz
tar xvf libffi-${LIBFFI_VERSION}.tar.gz
cd libffi-${LIBFFI_VERSION}
./configure --prefix=${CWD}/libffi
make && make install
cd ..
PKG_CONFIG_PATH="${CWD}/libffi/lib/pkgconfig" CFLAGS="-I${CWD}/openssl/include -I${CWD}/libffi/lib/libffi-3.2.1" LDFLAGS="-L${CWD}/openssl/lib -L${CWD}/libffi/lib64" pip wheel cryptography
上面最重要的部分是最后的参数设置,相关参数需要根据对应C库编译时用到的参数在pip install xxx
前面缀上即可。
又比如安装 MySQL-python
:
CFLAGS="-I/home/xxx/installed/usr/include/mysql" LDFLAGS="-L/home/xxx/installed/usr/lib64/mysql" pip install MySQL-python
网友评论