yum install openssl-devel
因为pip安装第三方库需要ssl模块,而python默认安装ssl功能是不可用的,安装openssl后重新编译python3安装文件,加上--with-ssl参数就可以让pip3使用ssl功能了
#重新编译安装
./configure --prefix=/YOURPATH --enable-optimizations --with-ssl
make
make install
当然我们也可以自己安装openssl,然后配置环境变量LD_LIBRARY_PATH
但是我个人在安装3.6.5版本的过程中发现configure根本没有 --with-ssl参数,如果是我们自己安装了openssl,我们需要指定openssl安装路径:
./configure --prefix=
--enable-optimizations
CPPFLAGS="-I/Public/software/openssl-102/include
-I/Public/software/openssl-102/include/openssl"
LDFLAGS="-L/Public/software/openssl-102/lib"
make
make install
四、windows下pip install fasttext出现错误
同样,如果安装其他包出错,我们可以自己下载包,然后执行pip install package_name
这是windows版本的
六、python项目部署过程中安装包依赖问题
1.项目背景
本人在自己的win10上开发了python项目,并且已经测试完毕,现在要往其他服务器上部署,但是服务器无法访问外网,那么如何有效的部署呢?
2.使用pip输出依赖
pip freeze > requirements.txt
这个命令可能是很多同学用来输出依赖的命令, 但它输出的是当前环境下(笔者默认你使用的是Python的虚拟环境)的所有包, 也就是输出当前你安装的全部非Python标准库包)
笔者在自己终端上试了一下, 输出的包很多 (这里暴露了我没有按项目建虚拟环境的烂习惯(逃)
对于按项目建环境的同学, 这种输出方式是没有多大问题的,只要部署的时候在终端键入
pip install -r requirements.txt
就可以安装好依赖了, 但是对于没有严格区分项目环境的同学, 一次性安装了其他的包, 并不是一个好的解决方案(这里要注意:笔者的服务器无法访问外网,也就是没法使用pip install 去下载包,除非将包提前上传到服务器)
3.通过pipreqs库输出依赖
与pip直接导出全部不同, pipreqs只导出指定项目下Python文件import的库
# 安装
pip install pipreqs
# 切换到项目目录
# 输出requirements.txt到项目根目录下
pipreqs --use-local --encoding=utf-8 ./
瞬间清爽不少
打包pip和wheel的whl文件(如果没有wheel,就pip install wheel安装)
pip wheel --wheel-dir=/tmp/wheel_pip pip
pip wheel --wheel-dir=/tmp/wheel_pip wheel
# 上面的/tmp/wheel_pip目录自己可以任意创建一个目录
打包所有依赖包的whl文件
pip wheel --wheel-dir=/tmp/wheel_pip -r requirements.txt
下载get-pip文件
wget https://bootstrap.pypa.io/get-pip.py
将whl文件及get-pip.py文件和requirements.txt文件上传到离线服务器(即无法上网的服务器:可以将所需文件打包,交给相应的运维上传)
然后在离线服务器上操作:
安装pip
python get-pip.py --no-index --find-links=/tmp/wheel_pip
安装wheel
pip install --no-index --find-links=/tmp/wheel_pip wheel
安装其他包
pip install --no-index --find-links=/tmp/wheel_pip -r requirements.txt
这样就把requirements.txt中的包安装到离线服务器,这里需要注意:在windows下打包的whl文件必须和离线服务器上python版本需要的包保持一致
4.总结(往linux裸机上部署python项目)
查看系统版本(uname -a或者cat /proc/version)->requirements.txt(参考上面,即可安装所需的python包)
注意:从git上拉下的项目,如果出现导入自建包出错的情况,需要自己设置PYTHONPATH环境变量