Python的杂项

Anaconda查看、安装、更新

查看

pip list
# 或者
conda list

安装或更新

# 以scipy为例
pip install scipy
pip install scipy --upgrade
# 或者
conda install scipy
conda update scipy

# 更新所有库
conda update --all

# 更新 conda 自身
conda update conda

# 更新 anaconda 自身
conda update anaconda

建议用conda而不是pip

原因:pip在windows平台很多时候都可能报错,而conda很少报错。

Anaconda安装opencv2和opencv3

opencv2: conda install -c https://conda.binstar.org/menpo opencv

opencv3: conda install --channel https://conda.anaconda.org/menpo opencv3

Anaconda设置清华的镜像

输入两句指令:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes 

若执行完上面两句报类似Warning: 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/' already in 'channels' list, moving to the top的错误,解决办法如下:

前往当前用户的家目录下,查看一个名为.condarc为文件,将其内容改为:

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true

jupyter notebook设置默认工作目录

  1. 终端输入命令jupyter notebook --generate-config

    生成配置文件

    可以在家目录下看到生成的配置文件

    配置文件

  2. 进入.jupyter目录,找到配置文件jupyter_notebook_config.py

    .jupyter目录

  3. 修改配置文件

    修改配置

    将图中红框的内容改成自己想要的目录即可。

python包管理工具之间的关系梳理

(这部分内容整理自知乎一些回答和一些博客)

python由于开源,所以包管理方式众多,这些之间都是什么关系呢?其实,当查过Python的官方文档之后,慢慢就理清了这些工具之间的关系了,也就没有这么混乱了。

distutils

distutils是python的标准库的一部分,这个库的目的是为开发者提供一种方便的打包方式, 同时为使用者提供方便的安装方式。

我们经常使用的setup.py就是基于distutils实现的,然后通过setup.py就可以进行打包或者安装了。

看一个简单的例子,找一个目录创建三个文件foo.py、bar.py和setup.py,其中setup.py的内容如下:

from distutils.core import setup
setup(
    name='fooBar',
    version='1.0',
    author='Will',
    author_email='wilber@sh.com',
    url='http://www.cnblogs.com/wilber2013/',
    py_modules=['foo', 'bar'],
)

然后,在该目录中运行 python setup.py sdist ,会得到以下输出,同时生成了一个fooBar-1.0.zip包。

1

使用者就可以解压缩这个包然后执行 python setup.py install进行安装,然后就可以使用foobar这两个模块了:

这里写图片描述

关于更过如何编写setup.py的内容,请自行参阅Python官方文档中的setupscript部分。

setuptools 和 distribute

setuptools 是对 distutils 的增强,它试图完成distutils缺少的特性而开始开发,尤其是引入了包依赖管理。我们可以通过ez_setup.py来安装setuptools。

ez_setup.py 是 setuptools 的安装工具。ez 就是 easy 的缩写。

简单的说,setuptools 是一个项目的名称,是基础组件。而 easy_install 是这个项目中提供的工具,它依赖基础组件工作。

在setuptools的开发过程中产生了分歧,于是出现distribute,它fork自setuptools,并在2013年取得和解并重新merge到setuptools 0.7版本中
,所以现在可以认为它们是同一个东西。

前面看到setup.py可以创建一个压缩包,而setuptools使用了一种新的文件格式(.egg),可以为Python包创建 egg文件。setuptools 可以识别.egg文件,并解析、安装它

easy_install

easy_install是setuptools的命令行接口,有更多的特性;当安装好setuptools/distribute之后,我们就可以直接使用easy_install这个工具了:

  • 从PyPI上安装一个包:当使用 easy_install package 命令后,easy_install 可以自动从 PyPI 上下载相关的包,并完成安装,升级
  • 下载一个包安装:通过 easy_install package.tgz 命令可以安装一个已经下载的包
  • 安装egg文件:通过 easy_install package.egg 可以安装一个egg格式的文件

根据上面的分析,可以看到setuptools/distribute和easy_install之间的关系:

  • setuptools/distribute 都扩展了 distutils,提供了更多的功能
  • easy_install是基于setuptools/distribute的一个工具,方便了包的安装和省级

pip

pip是目前最流行的Python包管理工具,它被当作easy_install的替代品,但是仍有大量的功能建立在setuptools之上。

easy_install 有很多不足:安装事务是非原子操作;只支持 svn;没有提供卸载命令;安装一系列包时需要写脚本。pip 解决了以上问题,已经成为新的事实标准。

pip的使用非常简单,并支持从任意能够通过 VCS 或浏览器访问到的地址安装 Python 包:

  • 安装: pip install SomePackage
  • 卸载: pip uninstall SomePackage

pip使用了一种新的文件格式(.whl),可以为Python包创建wheel文件。pip可以识别.whl文件,并解析、安装它。

pip的安装

pip的安装有两种常用的方式:

  • 下载get-pip.py文件,然后执行 python get-pip.py 进行安装(如果没有安装setuptools,那么get-pip.py会帮忙安装)
  • 现在pip源码包,然后通过setup.py进行安装

eggs格式和wheels格式

Eggs 格式是 setuptools 引入的一种文件格式,它使用 .egg 扩展名,用于 Python 模块的安装。

setuptools 可以识别这种格式。并解析它,安装它。

pip 希望不再使用 Eggs 格式(虽然它支持 Eggs),而更希望采用“源码发行版”(使用 python setup.py sdist 创建)。

wheel 本质上是一个 zip 包格式,它使用 .whl 扩展名,用于 python 模块的安装,它的出现是为了替代 Eggs。

wheel 还提供了一个 bdist_wheel 作为 setuptools 的扩展命令,这个命令可以用来生成 wheel 包。

Python模块安装的方法汇总

easy_install

easy_install xxx

如果出现安装报错:Unable to find vcvarsall.bat,大致是说缺少Microsoft VC++9.0,这可能是电脑缺少它,或者是安装的是VC++的高版本,而它需要VS2008对应的VC++版本来支持,所以报错。

可能的解决办法:

  • 如果装了Visual Studio 2010,可以在执行easy_install之前先执行下面的命令:
    SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • 如果Visual Studio2012:
    SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • 如果vs版本是2013:
    SET VS90COMNTOOLS=%VS120COMNTOOLS%

不一定会成功,但可以一试~

pip install xxx

Windows平台下有些包可能会失败。

pip install xxxxx.whl

推荐这种,失败的概率不大。

Anaconda(如果用途是科学计算)

Anaconda: Anaconda Scientific Python Distribution,很多科学计算的library已经集成好了(不仅包含numpy,还有sklearn, pandas等等),并且安装完Anaconda后,会自动得到一个挺不错的IDE:Spyder

Python(x,y)

里面几乎包含了所有的python常用库以及很多实用工具,而且安装成功率很高。

pycharm插件管理

file--->settings--->project interpreter

pycharm下设置自动换行

菜单栏 — View — Active Editor — 勾选Use Soft Wraps

Ubuntu下安装pip

Ubuntu自带有python,但是没有pip。

安装方式:

sudo apt-get install python-pip python-dev build-essential 
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv 

安装完成后,安装的pip在/usr/lib/python2.7/dist-packages下。改文件夹下有两个和pip有关的文件:

  • pip
  • pip-8.1.1.egg-info

Ubuntu使用pyenv管理多个Python版本

Ubuntu的python是系统预装的,系统很多组件都依赖了预装的python,所以最好不要在系统的python上折腾,万一搞崩了,系统可能就挂了。

所以最好 将自己使用的python环境和系统自带的python环境隔离开来 。这样我们用自己的环境开发,系统用它自带的环境当依赖。万一我们把自己开发用的环境搞崩了,重装一下即可。不会给系统带来不可逆的伤害。

前奏

需要安装一些包,不然安装Python版本时会有报错,我就遇到过类似的报错:

haha@HA:~$ pyenv install $v 
Installing Python-3.5.2...
patching file Lib/venv/scripts/posix/activate.fish
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems

BUILD FAILED (Ubuntu 16.04 using python-build 20160602)
  • sudo apt-get install libbz2-dev
  • sudo apt-get install libssl-dev
  • sudo apt-get install libreadline6 libreadline6-dev
  • sudo apt-get install libsqlite3-dev

正式安装

  1. 将项目代码拉下来:

    git clone https://github.com/yyuu/pyenv.git ~/.pyenv
    
    或者自动安装(官方作者提供的方法):
    
    curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
  2. 加入环境变量:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
  3. 将”pyenv”加入命令行,并且支持tab键补全:

    echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

配置完成后就像下图这样:

这里写图片描述

注:如果是Mac

安装:

brew install pyenv

配置:

brew info pyenv会显示如下:

==> Caveats
To use Homebrew's directories rather than ~/.pyenv add to your profile:
  export PYENV_ROOT=/usr/local/var/pyenv

To enable shims and autocompletion add to your profile:
  if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

因此,

echo 'export PYENV_ROOT="/usr/local/var/pyenv"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

基本使用:

  • 列举所有的可用的Python版本:pyenv install -l

  • 安装某个版本的python:pyenv install 2.7.5;pyenv rehash

  • 列出所有已经安装的版本:pyenv versions

  • 查看当前处于激活状态的版本:pyenv version

  • 设置全局Python版本:pyenv global 2.7.12

pyenv加速

pyenv下载的速度很慢,因为它是从国外的源下载的,例如:

haha@HA:~$ pyenv install 3.5.1
Downloading Python-3.5.1.tar.xz...
-> https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz

因此考虑,如果配合国内镜像的话,能大幅度提高下载速度:

加速思路:

  1. pyenv搜狐镜像源加速:http://mirrors.sohu.com/python/

  2. 下载需要的版本放到~/.pyenv/cache文件夹下面

  3. 然后执行 pyenv install 版本号,安装对应的python版本

  4. 傻瓜式脚本如下,其中v表示要下载的版本号

v=3.5.2
wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/
pyenv install $v 

有网友贴出了一个脚本的自动化安装,挺赞的,粘过来:

1 #! /usr/bin/env python
      2 import subprocess, os
      3 from os.path import expanduser
      4 
      5 # parameters
      6 config_file = ".bashrc"
      7 
-     8 def script(cmd):
|     9     subprocess.call(cmd,  shell=True)
     10 home = expanduser("~")
     11 
     12 # install pyenv
     13 script("unzip ./pyenv-master.zip")
     14 env_path = home+"/"+".pyenv"
     15 if not os.path.exists(env_path):
     16     os.makedirs(env_path)
     17 script("cp -rf ./pyenv-master/* ~/.pyenv")
     18 
     19 config_file = home+"/"+config_file
     20 print config_file
     21 if os.path.exists(config_file) is False:
     22     print "Error: can't find config file "+ config_file
     23     exit()
     24 with open(config_file, 'a') as file:
     25     file.write('export PYENV_ROOT="$HOME/.pyenv"\n')
     26     file.write('export PATH="$PYENV_ROOT/bin:$PATH"\n')
     27     file.write('eval "$(pyenv init -)"\n')
     31 os.environ["PYENV_ROOT"] = home+"/"+".pyenv"
     32 os.environ["PATH"]  +=  ":"+os.environ["PYENV_ROOT"]+"/bin"
     33 script("pyenv init")
     34 print os.environ["PATH"]
     35 script("source "+config_file)
     36 script("pyenv install 2.7.5")
     37 script("pyenv rehash")
     38 script("pyenv global 2.7.5")
     39 script("rm -rf ./pyenv-master")

what is python-dev

有时候会看到装什么东西的时候,需要python-dev,它又是何方神圣呢?

引用stackoverflow上的问答:

Question

I recently installed lxml.

Before that I had to install all the dependencies for that. 
So I tried to install liblxml2-dev, liblxslt1-dev and python-dev (google searched for what packages are required for lxml)

but even after that I could not able to install lxml by using the command pip install lxml.

However as because I am using Python 3.4.0, 
I thought that may be there are different version of python-dev (thought came due to facing some similar version conflict problem). 
So I tried to install python3-dev.

Then I tried to install lxml using the same command said earlier and that worked!!!

As I am a newbie in this. 
So I google searched for those sentences and I could able to understand the meaning of lxml and xslt. 
I found a link for python-dev but I am not still sure what it is actually doing.

Could anyone help ?
Answer

python-dev contains the header files you need to build Python extensions. 

lxml is a Python C-API extension that is compiled when you do pip install lxml. 
The lxml sources have at least something like #include <Python.h> in the code. The compiler looks for the Python.h file during compilation, 
hence those files need to be on your system such that they can be found. 

On Linux typically, the the binary libraries and header files of packages like python are separate. 
Hence you can have Python installed and everything works fine 
but when you want to build extensions you need to install the corresponding dev package.

windows下安装scipy失败

问题描述

pip install scipy结果报了一堆错,大概意思是找不到一些包,我开始还以为是缺少依赖呢。但是pip就像apt-get一样,是自动会解决依赖的,找了一会儿,在stackoverflow上找到了答案。

注:由于我关了报错的命令行,所以我这边的错误截不到图了,但是看到别人问了类似的问题,把这人的图截过来做个示意,我遇到的错误大概也是这个意思。

这里写图片描述

这是截的别人的图,我的大概也是这样,看上去是不是很像缺少依赖的感觉?

解决办法(摘自stackoverflow)

这里写图片描述

这个答案说的挺清楚了,windows下这种问题很常见(坑啊)。

去这人给出的第一个超链接进去(http://www.scipy.org/install.html),下载对应的whl包,然后安装这个whl包即可。

whl是预编译好的包。安装whl包的过程可以百度or谷歌一下,很简单。

stackoverflow原帖地址

ImportError: cannot import name NUMPY_MKL(win下)

背景:

我用pip安装了numpy成功,但是用pip安装scipy报错,于是下了pre-build的whl包成功安装了scipy(见本篇上一条问题)。

然后再我运行python代码的时候,报了一个错误ImportError: cannot import name NUMPY_MKL,这个错误很明显,是缺少numpy_mkl,然后关于整个原因和来龙去脉,在stackoverflow上找到了答案。

解决办法以及问题原因

问题描述

这里写图片描述

解决办法

这里写图片描述

stackoverflow原帖地址

包管理工具安装卸载

  1. 用pip安装的拓展,安装在哪里?
    安装在:
    Windows是python目录下 Lib\site-packages\;
    Ubuntu是 /usr/local/lib/python/dist-packages/
  2. 有时候安装一些东西需要用 “python setup.py” 这种形式来安装,
    这样安装后,文件安装到哪里去了呢?
    可以这样办:
    “python setup.py install –record log.txt”
    然后打开log.txt就可以看到所有安装文件的记录了,删除的时候可以考虑手动删除。
    如果嫌手动麻烦,可以这样:”sudo cat log.txt | sudo xargs rm -rf” 就可以干净卸载了
  3. easy_install以及pip安装的模块都在/usr/local/lib/python2.7/dist-packages下

windows下mysql驱动安装失败

mysql官网下载下来的驱动

安装后提示的错误

而我的python安装包的确是在官网下载的对应的安装包,可是为什么报这个错误。

然后我再stackoverflow上找到了答案,原文摘过来:

问题描述

解决办法

注意

不建议这种安装 ,建议用pip安装,可是pip直接安装会报错,解决办法见我的这篇博客Mac的开发者基础配置,具体位置在这篇博客的“安装MySQL驱动”标题下。

MySQL-python安装报错

python2.7在windows下用pip安装一些package的时候,可能会报错。

例如我在 pip install mysql-python的时候,就报了如下的错误:

这里写图片描述

原因: windows下使用pip安装包的时候需要机器装有vs2008,VS2012/2013/2015还不行。

疑似可行的解决办法: 安装一个Microsoft Visual C++ Compiler for Python2.7下载地址是:
https://download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59FBF6D907B/VCForPython27.msi (80多M,有点大)

安装好后,再次执行pip install mysql-python,报另一个错,如图:

这里写图片描述

这里是说找不到头文件,这时就应该警觉了,这样一个一个折腾下去不是办法,可能解决这个,还报其他的错误。

终极解决办法

看了网上很多人都遇到这个问题,都是通过下载预编译好的whl包或者exe文件解决的。

  1. 下载whl安装

    http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python下载对应的包版本,然后用pip安装whl。

  2. 下载exe安装

    https://pypi.python.org/pypi/MySQL-python/下载对应的版本

我采用的是whl方式,因为我个人习惯是依赖一律用pip安装。

windows下安装pip以及配置pip

仅仅安装好python,然后配置好python环境变量后,会发现pip无法用。原因是还没有安装pip,也还没有将pip加到PATH中去。

安装pip

  1. cd到easy_install下,即%PYTHON_HOME%\Scrips(例如C:\Python27\Scripts)
  2. 在该目录下执行easy_inatall pip

验证安装成功:cmd中输入pip,不提示“pip不是内部或外部命令,也不是可运行程序或批处理文件”

配置pip

将pip加到环境变量,即将%PYTHON_HOME%\Scrips加入到PATH。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值