python模块的安装
python安装要注意第三条
一、xgboost
windows下:pip install xgboost下出现下面的错误-No files/directories.尝试下载xgboost.whl文件,然后再该whl文件的所在目录下执行pip install xgboost‑0.71‑cp35‑cp35m‑win_amd64.whl文件
whl文件下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost
我选择:xgboost‑0.71‑cp35‑cp35m‑win_amd64.whl 64位操作系统,python35版本的
二、python如何升级包,如想升级setuptools包
pip install - upgrade setuptools #or pip install -U setuptools #发现无法升级,反而pip不能用了,报No module named _internal错误 #解决方法 sudo easy_install pip
三、pip安装模块出错
错误如下:pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available
解决:
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)-> 安装python(这里需要注意系统上是否安装了openssl,否则python安装后pip可能无法使用) -> 在windows上生成requirements.txt(参考上面,即可安装所需的python包)
注意:从git上拉下的项目,如果出现导入自建包出错的情况,需要自己设置PYTHONPATH环境变量
七、设置源
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \ # pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/ pip install packageName # 升级pip python -m pip install --upgrade pip -i https://pypi.mirrors.ustc.edu.cn/simple/