Skip to content

tankeryang/pythonNotes

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table of Contents

python 笔记

笔记记录在.ipynb文件中,用Jupyter打开。pychram2017.1版本开始也支持.ipynb文件,也可以用pychram打开

重要更新:

  • 2018-04-06: 新增Project文件夹,可以将练手的项目放在上面,互相学习

git 笔记--开发流程

创建分支

  • git branch dev
  • git branch feature

切换分支

  • git checkout dev

添加修改进暂存区

  • git add [filename]

提交修改

  • git commit -m "change" [filename]

合并dev分支到本地master(防止分支被误删,还是保持master的更新)

  • git checkout master
  • git merge dev

推送分支到远程库

  • git push origin dev

发起pull request,审核后merge到远程库的master分支

抓取更新后的远程库的master分支到本地feature分支

  • git checkout feature
  • git fetch origin master
  • git log -p dev feature

比较刚抓取的更新和当前dev开发分支有和异同,审核后再合并到dev

  • git checkout dev
  • git merge feature

关于Anaconda

Anaconda简介

Anaconda是一个python集成环境,主要面向python科学计算和数据分析上,因此它集成了许多第三方科学计算的库,如 NumPySciPymatplotlib 等。Anaconda有自己的包管理工具conda,类似于pythonpip,但是它的功能用法要强大许多。它有自己的文档,点击前面conda链接访问使用文档。本文后部分也会介绍conda的一些常用命令。

安装(Windows)

  • 下载Anaconda,如果下不动可以到这里下载,找自己需要的版本
  • 运行安装程序,如 Anaconda3-4.3.1-Windows-x86_64.exe,选择要安装的路径,如 D:\Anaconda3
  • 进行到如下步骤时(如下图),把第一个勾去掉(添加环境变量),我们稍后自己添加。
  • 安装

如果之前装过python的,建议卸载掉,避免环境变量上的冲突

添加环境变量

  • (右键)计算机(我的电脑) --> 属性 --> (左边栏)高级系统设置 --> (右下)环境变量
  • 用户变量里新建以下三个变量,及其对应值
  • 变量名:ANACONDA3 变量值:(你的安装路径)\Anaconda3 (如D:\DevelopTools\Anaconda3)
  • 变量名:ANACONDA3_SCRIPTS 变量值:(你的安装路径)\Anaconda3\Scripts;(你的安装路径)\Anaconda3\Tools\Scripts (如D:\DevelopTools\Anaconda3\Scripts;D:\DevelopTools\Anaconda3\Tools\Scripts)
  • 变量名:ANACONDA3_TOOLS 变量值:(你的安装路径)\Anaconda3\Tools (如D:\DevelopTools\Anaconda3\Tools)
  • path变量名里添加以下三个变量值
  • %ANACONDA3%
  • %ANACONDA3_SCRIPTS%
  • %ANACONDA3_TOOLS%

测试

  • 打开cmd,输入python,检查版本号与你安装的是否一致。

关于conda的使用

conda简介

conda是一个开源的包管理系统和环境管理系统,它专门用来处理安装多版本的软件包和依赖,并且能轻松地在之间切换而互不影响。它支持OSXLinux,和Windows,最初它是为python打包和发布软件专门设计的,现在它支持的语言已经有多种:Python,R,Ruby,Lua,Scala,Java,Javascript,C/C++,FORTRAN

官方介绍

Package, dependency and environment management for any language: Python, R, Ruby, Lua, Scala, Java, Javascript, C/ C++, FORTRAN

Conda is an open source package management system and environment management system for installing multiple versions of software packages and their dependencies and switching easily between them. It works on Linux, OS X and Windows, and was created for Python programs but can package and distribute any software.

Conda is included in Anaconda and Miniconda. Conda is also included in the Continuum subscriptions of Anaconda, which provide on-site enterprise package and environment management for Python, R, Node.js, Java, and other application stacks. Conda is also available on pypi, although that approach may not be as up-to-date. Miniconda is a small “bootstrap” version that includes only conda, Python, and the packages they depend on. Over 720 scientific packages and their dependencies can be installed individually from the Continuum repository with the “conda install” command.

Anaconda includes conda, conda-build, Python, and over 150 automatically installed scientific packages and their dependencies. As with Miniconda, over 250 additional scientific packages can be installed individually with the “conda install” command.

pip install conda uses the released version on pypi. This version allows you to create new conda environments using any python installation, and a new version of Python will then be installed into those environments. These environments are still considered “Anaconda installations.”

The conda command is the primary interface for managing Anaconda installations. It can query and search the Anaconda package index and current Anaconda installation, create new conda environments, and install and update packages into existing conda environments.

配置源(非常重要!!!)

conda下载软件包时,默认从官方源下载。因为GFW的原因,很多时候下载网速会非常慢,甚至访问不到,根本下不下来。这时我们可以通过更改软件源来解决这一监介局面。国内比较好的镜像源站要数清华大学开源软件镜像站了,它包含了许多开源镜像,如LinuxISOPythonR等等。下面我们进行配置

方法1

  • 找到 .condarc 文件,位置在你的用户目录下(如:C:\Users\username)
  • 记事本文本编辑器打开它
  • 把它替换成如下内容:
channels:
    - https://pypi.tuna.tsinghua.edu.cn/simple/
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mro/
show_channel_urls: true

这几个源基本涵盖了所有需要的软件在里面,包括R语言

  • 保存

方法2

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

这几个源基本涵盖了所有需要的软件在里面,包括R语言

  • 找到 .condarc 文件,位置在你的用户目录下(如:C:\Users\username)
  • 记事本文本编辑器打开它
  • 删除 -default 一栏

方法3

  • 打开PyCharm
  • 选择 File --> Default Settings --> Project Interpreter
  • Project Interpreter下拉栏里选择Anaconda的选项

如果没有,则点击右边的 设置 --> Add Local,找到Anaconda文件夹下的python.exe,选中,点击OK

  • 点击右边的 +,弹出 Available Packages 窗口,点击下方的 Manage Repositories
  • Manage Repositories 窗口里,点击右边的 +,输入以下源链接,注意,要一条条添加
https://pypi.tuna.tsinghua.edu.cn/simple/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mro/
  • 删除 default 一栏

常用命令

conda 的官方文档在这里

conda配置 conda config

  • conda的配置信息一般都写在 .condarc 文件里,输入 conda config --help 查看命令参数与用法

例:

输入:conda config --show

返回:

add_anaconda_token: True
add_pip_as_python_dependency: True
allow_non_channel_urls: True
allow_softlinks: True
always_copy: False
always_softlink: False
always_yes: False
anaconda_upload: None
auto_update_conda: True
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: True
 channels:
   - https://pypi.tuna.tsinghua.edu.cn/simple/
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mro/
 client_ssl_cert:
 client_ssl_cert_key:
 clobber: False
 create_default_packages: []
 custom_channels:
   pkgs/free: https://repo.continuum.io/
   pkgs/r: https://repo.continuum.io/
   pkgs/pro: https://repo.continuum.io/
   pkgs/msys2: https://repo.continuum.io/
 custom_multichannels:
   defaults: ["https://repo.continuum.io/pkgs/free", "https://repo.continuum.io/pkgs/r", "https://repo.continuum.io/pkgs/pro", "https://repo.continuum.io/pkgs/msys2"]
   local: []
 default_channels:
   - https://repo.continuum.io/pkgs/free
   - https://repo.continuum.io/pkgs/r
   - https://repo.continuum.io/pkgs/pro
   - https://repo.continuum.io/pkgs/msys2
 disallow: []
 envs_dirs:
   - D:\DevelopTools\Anaconda3\envs
   - C:\Users\yang\AppData\Local\conda\conda\envs
   - C:\Users\yang\.conda\envs
 force: False
 json: False
 local_repodata_ttl: 1
 migrated_channel_aliases: []
 offline: False
 path_conflict: clobber
 pinned_packages: []
 pkgs_dirs:
   - D:\DevelopTools\Anaconda3\pkgs
   - C:\Users\yang\AppData\Local\conda\conda\pkgs
 proxy_servers: {}
 quiet: False
 remote_connect_timeout_secs: 9.15
 remote_max_retries: 3
 remote_read_timeout_secs: 60.0
 rollback_enabled: True
 shortcuts: True
 show_channel_urls: True
 ssl_verify: True
 track_features: []
 use_pip: True
 verbosity: 0

conda自身管理

  • 查看conda版本: conda --version
  • 升级conda版本: conda update conda

python环境&多版本python管理

python的版本问题一直以来饱受(我的)诟病,特别是 python2python3 的语法可是有很大区别,以致于一些库的使用都造成了很大麻烦。但是,你又不希望自己的系统同时装两个,甚至好几个版本的python,光是想怎样切换都是一件头疼的问题。在没有conda之前,我有尝试过 virtualenvpyenv 这两种python多版本环境管理工具,但是总感觉不太友好。直到我TM遇到了conda...

因为Anaconda是一个面向于科学计算的python集成环境,所以它包含的库大多都是做科学计算的。但是像Web开发方面的库和框架(Django)Anaconda就没有集成在里面。假如我现在要用python做Web开发,而且我只安装了Anaconda,我又不想直接把Django装到Anaconda里面,我想把它跟其他包隔离开来,Anaconda专门处理数据分析的问题。这时conda的环境管理就派上用场了。

  • 输入conda env --help查看有关conda环境管理的命令与帮助

创建环境(conda create)

conda的环境创建一般在Anaconda\env\目录下,假如需要更改路径,输入conda create --help查看有关说明

  • 假如你的Anaconda版本为python3,现在你想创建一个新的环境,基于python2版本,不含任何第三方库,只是完整干净的python2环境。你只需在终端输入:
conda create --name py2 python=2

这里py2是环境名,是自定义的。

  • 假如你要创建一个新的环境,用于Web开发,版本与当前Anaconda的python版本一致,需同时包含Django库,你只需在终端输入:
conda create --name [这里填你的环境名] django

切换环境(activate/deactivate)

  • 输入activate [你的环境名]激活环境
  • 输入deactivate [你的环境名]注销环境

列出所有已创建的环境

  • 输入conda info --envs
  • 或者输入conda env list

验证当前环境

  • 输入conda info --envs

克隆一个环境

  • 新建环境时,克隆一个已有环境到其中,输入 conda cerate --name [新环境名] --clone [已有环境名]

删除一个环境

  • 当你想删除某个环境时,输入conda remove --name [你的环境名]

分享你的环境给其他基友

你可能会想把你打包的环境发给你的基友,这样他就可以轻松的跑你(手动滑稽)在这个环境上写的程序,做的有趣的项目。把一切你用到的包,版本和环境打包给他,你只需给他一份environment.yml文件的copy

  • 首先,激活你想要打包的环境,如heiheihei(环境名),输入activate heiheihei

注意,假如你已有environment.yml文件,那么将会被新文件覆盖

  • 导出environment.yml文件 conda env export > environment.yml
  • 把文件**发(cha)给(ru)**你的基友
  • 你的基友根据文件来创建环境 conda env create -f environment.yml
  • 基友激活你的的环境heiheihei activate heiheihei

更多有关环境管理的命令请访问conda官方文档

conda包管理

  • 查看当前环境已安装的包 conda list
  • 查找包,确定是否能安装 conda search [包名]
  • 在当前环境安装软件包 conda install [包名]
  • 在某一环境安装软件包 conda install --name [环境名] [包名]
  • 升级软件包 conda update [包名],升级conda conda update conda,升级python版本 conda update python
  • 删除当前环境软件包 conda remove [包名]
  • 删除某一环境软件包 conda remove --name [环境名] [包名]

让Anaconda支持R语言

R语言是一个专门用来做统计分析的语言,内置庞大统计分析函数库,为数据分析量身而制。详细介绍访问R官方网站,这里不在赘述

  • 安装所有R语言的包和依赖 conda install r r-essentials
  • 升级安装的R包和依赖 conda update r r-essentials

关于Jupyter

Anaconda里除了一大堆第三方包,还有一些非常niuchalable的工具,其中Jupyter就是这其中一个。

Jupyter全称应该叫Jupyter Notebook,顾名思义,Jupyter定义为笔记本。而且Jupyter的确是一种交互式笔记本,可以支持python在内的多达40种语言的输入输出。它的前身(应该是前身)就是出名的 IPython Notebook,后来整个Ipython项目升级为Jupyter,就有了现在的Jupyter Notebook

Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码数学方程可视化markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等

Jupyter的使用其实非常容易上手。只要你习惯了这种输入输出方式,你就会觉得写代码和写博客一样有趣(手动滑稽)。当你开始习惯在上面写代码,记笔记时,你就会开始有折腾的心理了。下面讲讲我的折腾(用法)

注意:Jupyter的输入输出栏(姑且先这么叫)在Jupyter里称为cell。下面有讲到输入输出栏的地方都称作cell

让Jupyter支持其他语言(R)

这是我第一个想到要去折腾的事情。因为毕业设计的原因,我需要微微地用一下R语言做一些统计分析的工作(微小的工作)。我那时并没有了解到Anaconda就可以帮我完成这件工作,只需要一条命令。我天真地下载了R的安装包,然后查了一堆关键词为 Jupyter,R 的资料,经过一轮番配置,才艰难完成。等对conda有一定了解的时候,才知道自己真的上台拿衣服。下面说一下Anaconda是如何做到的。

  • 首先,完。(其实这一步在配置源的时候就已经完成了。就是添加R的镜像源,url为以下)
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  • 然后,完。(第二步也就是执行让Anaconda支持R语言一节里的命令 conda install r r-essentials
  • 最后,打开Jupyter,在new下拉菜单里你就会看到R这一选项了。

是不是很简单?你以为完了吗?拿衣服!所以说有时候长者的话,要听完,不然下场就是上台拿衣服

当你在new菜单里选择了R时,会新建一个R语言的notebook。但是你会看到浏览器蹦出了两个提醒窗口(反正我是看到了),具体内容是有关R的一个名为formatRpackage缺失的问题。我之前一直都忽略它,因为我发现我依然能正常地在Jupyter里写R代码。但是作为一个强迫自己成为强迫症患者患者,绝不容许这种弹窗的出现!!!所以我查了下formatR这个东西,我发现了这里。原来formatR是一个R语言的自动排版的依赖库,能进行排版缩进,语法高亮的处理。怪不得之前写R的时候总觉得怎么R这么单调,连关键字都没高亮。现在完事大吉。下面是解决过程。你也可以参考我发现的那个链接自己解决。

  • 打开Jupyter,新建R notebook
  • 在cell里输入 install.packages("formatR", repos = "http://cran.rstudio.com")
  • shift + Enter 执行

现在,你可以愉快地学习R语言了(手动滑稽)。

Jupyter命令

这也是我折腾的一个点。写代码,或者说打字吧,最烦就是整天要鼠标键盘来回切。命令的熟悉是必须的。下面讲讲我常用的命令。

首先查看命令捷键导航栏Help --> Keyboard Shortcuts选项里

  • 命令模式(按Esc),一般在命令模式下才能执行下面的快捷键命令
  • Enter:进入编辑模式,在当前的cell继续编辑
  • M:当前cell变为markdown格式
  • Y:当前cell变为代码模式
  • 编辑模式(按Enter),一般在命令模式下才能执行下面的快捷键命令
  • ctrl + s:保存
  • ctrl + z:撤销

更多命令请自行探索。

Jupyter插件

插件是每个软件最有可玩性的地方之一,儿Jupyter作为一个Web应用程序,当然不会缺插件与开发者。不得不说,Jupyter的插件还是挺实用的。

一个屌的软件背后通常都会有一堆屌的插件 ----沃·兹基硕德

要给Jupyter装插件,你需要装以下两个东西

下面介绍一些好的插件

这是一个给markdown生成目录的插件,写东西很爽(手动滑稽)

目前只有这个插件用得比较多,值得推荐。当然还有很多不错的插件如python自动排版插件Autopep8,可以根据你需要处理的问题,自动在cell头添加import...的Snippets Menu。等等。等待你的发掘

About

记录一些语法 难题等

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Jupyter Notebook 64.1%
  • Python 35.9%