Ubuntu 20.04 LTS 自带 Python 3.8.10, 只需简单修改python默认版本即可。
还可以下两个工具:
pip (用于 Python 的标准包管理器) ,以及venv(用于创建和管理轻型虚拟环境的标准模块)
pip安装
- ubuntu
安装 pip
1 | sudo apt install python3-pip |
安装 venv :
1 | sudo apt install python3-venv |
- archlinux
安装 python
1 | yay -S python36 python37 python35 |
通过 ensurepip module
安装 pip
1 | python -m ensurepip --upgrade |
pip列出已安装包
列出已安装包
1 | pip list |
或者
1 | pip freeze |
pip网络安装程序
网络安装程序
1 | pip install package |
如:pip install opencv-python
pip本地安装程序
本地安装程序
1 | pip install <目录>/<文件名> |
如:pip install /home/liu/gdal-3.3.3-cp38-cp38.whl
pip批量安装
- 导出环所有依赖到
requirements.txt
文件
1 | pip freeze > requirements.txt |
批量安装requirements.txt中指定的包
1
pip install -r requirements.txt
列出已安装包
1
pip freeze
pip升级包
- 查询可升级的包2.升级包
1
pip list -o
1
pip install -U <包名>
- 升级pip
1
pip install -U pip
pip卸载包
- 卸载单一包
1
pip uninstall <包名>
- 批量卸载包
1
pip uninstall -r requirements.txt
pip显示包目录
显示包所在的目录
1 | pip show -f <包名> |
pip打包
1 | pip wheel <包名> |
pip搜索下载包
搜索包网址: https://pypi.org/
pip search <搜索关键字>
- 安装 `pip-search
1
pip install pip-search
- 搜索
1
pip_search tensorflow
pip下载包而不安装
1 | pip install <包名> -d <目录> |
pip指定单次安装源
1 | pip install <包名> -i http://pypi.v2ex.com/simple |
如:pip3 install onnxruntime==1.12.1 -i https://pypi.douban.com/simple --trusted-host pypi.douban.com
pip查看当前源
1 | pip3 config list |
修改源
- 命令行修改源:
1
pip3 config set global.index-url https://pypi.douban.com/simple/
- 源配置文件
修改~/.pip/pip.conf
1 | [global] |
- 常用源
a) 清华大学TUNA
https://pypi.tuna.tsinghua.edu.cn/simple/
b) ali
http://mirrors.aliyun.com/pypi/simple/
c) 中国科学技术大学
https://pypi.mirrors.ustc.edu.cn/simple/
d) 豆瓣
https://pypi.douban.com/simple/1
2
3
4
5
6
7
8
9
10
11
12
13
# pip安装virtualenv:
virtualenv 是一个创建隔绝的Python环境的 工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。
virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。
- [参考文献](https://blog.csdn.net/change_can/article/details/83789712)。
``` bash
sudo apt install python3-pip
pip install virtualenv
export PATH=/home/liupei/.local/bin:$PATH
virtualenv --version
virtualenv -h
virtualenv project 将会在当前的目录中创建一个文件夹,包含了Python可执行文件, 以及 pip 库的一份拷贝,这样就能安装其他包了。虚拟环境的名字(此例中是 project ) 可以是任意的;若省略名字将会把文件均放在当前目录。
- virtualenv 虚拟环境使用
1 | liupei@mac:~$ mkdir test && cd test |
python帮助
Linux网页查看
Python3自带的帮助文档,REF
1 | u@lab:~$ pydoc -p 8000 |
在控制台查看
直接在命令行Terminal查看帮助,REF
1 | $ python |
python导入文件的方法
调试代码的时候,程序一直提示没有该模块,一直很纳闷,因为我导入文件一直是用绝对路径进行导入的。按道理来讲是不会出现模块找不到的情况的。最后仔细分析了整个代码的目录结构,才发现了问题。
(1)主程序与模块程序在同一目录下:
如下面程序结构:
1 | – src |
若在程序test1.py
中导入模块mod1
, 则直接使用import mod1
或from mod1 import *
;
(2)主程序所在目录是模块所在目录的父(或祖辈)目录
如下面程序结构:
1 | – src |
若在程序test1.py
中导入模块mod2
, 需要在mod2
文件夹中建立空文件__init__.py
文件(也可以在该文件中自定义输出模块接口); 然后使用 from mod2.mod2 import *
或import mod2.mod2
.
(3)主程序导入上层目录中模块或其他目录(平级)下的模块
如下面程序结构:
1 | – src |
若在程序test2.py
中导入模块mod1.py
和mod2.py
。首先需要在mod2
下建立__init__.py
文件(同(2)),src
下不必建立该文件。然后调用方式如下:
下面程序执行方式均在程序文件所在目录下执行,如test2.py
是在cd sub
;之后执行python test2.py
而test1.py
是在cd src
;之后执行python test1.py
; 不保证在src
目录下执行python sub/test2.py
成功。
1 | import sys |
(4)从(3)可以看出,导入模块关键是能够根据sys.path
环境变量的值,找到具体模块的路径。
总结:
通过总结可以发现,当你要导入的文件在和你的当前文件在同一个目录时,你直接导入这个文件名就好了。
当你要导入的文件或者目录不和你的当前文件同目录时,你需要跳到这个你要导入文件的父级目录,然后一级一级的用点号连接走过的目录或者文件,然后就可以了 至于要怎么跳到这个这个父级目录。比较通用的就是,将父级目录加入系统路径,然后用点号一级一级的寻找,直到到达你要导入的模块。
自定义第三方库
一般安装Python的三方库,直接使用conda或Python的包管理工具pip,或下载源码包后,使用其中的setup.py安装,就可以直接安装在Python的系统库目录中了。
如果想使用一个三方库,又不想安装在Python的默认库目录中,可以程序中使用”sys.path.append(“具体路径”)”将三方库路径暂时加入库路径。如果想操作一次,之后任何程序都可以直接使用,比如自己写的库?以linux系统conda环境为例,示例如下:
建立自己的库
1 | mkdir libpy && vim libpy/liu.py |
把三方库路径写入”.pth”文件
1 | wsl@t470:~$ vim anaconda2/lib/python2.7/site-packages/x.pth |
查看python默认路径
conda下python默认路径文件
1 | wsl@t470:~$ python |
调用三方库
调用自己python库函数
1 | wsl@t470:~$ python |
python导入路径
1 | sys.path.insert(0, "/home/u/gcForest/lib") |
小例子
调用liu.py库,实现pkl格式自动转换为mat格式
1 | # pkl2mat |
conda安装
1 | wget -c https://repo.anaconda.com/archive/Anaconda2-2019.10-Linux-x86_64.sh --no-check-certificate |
清华源 下载anaconda
conda帮助
conda安装后验证等
1 | conda -V |
conda卸载
1 | # 卸载 anaconda |
conda修改源
- 查看当前源
1 | conda config --show channels |
显示如下:
1 | channels: |
- 再次查看当前源显示如下:
1
conda config --show channels
1
2
3
4
5
6
7channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
```
4. 恢复默认channel
```bash
conda config --remove-key channels
conda环境管理
- 取消启动base
1 | conda config --set auto_activate_base false |
- 显示已安装环境
1
conda env list
- 创建环境
1
2conda create -n py2 python=2.7
conda create -n py3 python=3.7 - 激活环境
1
conda activate py3
- 反激活环境
1
conda deactivate
- 克隆环境
1
conda create --name py2 --clone python2
- 删除环境
1
conda remove --name py2 --all
conda包管理
- 列出已安装包
1
conda list
- 安装包
1
conda install pandas
- 删除包
1
conda remove pandas
- 从指定环境中删除包
1
conda remove --name python2 pandas
- 升级包
升级单一包升级所有包1
conda upgrade pandas
1
conda upgrade --all
conda 批量导出
- 环境导出
1
conda env export > py36.yaml
- conda 批量安装or
1
conda env create -f py36.yaml
- 批量导出
1
conda list -e > requirements.txt
- 批量安装
1
conda install --yes --file requirements.txt
wsl环境配置
wsl安装及配置参考:wsl安装
vim自动补全python
下载Pydiction
1 | mkdir -p .vim/bundle |
配置Pydiction
1 | 2160 cp -r ~/.vim/bundle/pydiction/after/ ~/.vim |
在.vimrc文件添加如下配置
1 | filetype plugin on |
参考文献:wengyupeng
非管理员安装python
1 | download python: https://www.python.org/downloads/release |
更改python默认版本
- 打开终端,输入python,可以看到当前系统中默认的python版本是 2.7.12
- 进入”/usr/bin”目录下,输入”ls -l | grep python”显示所有名字中包含python的文件
- 只要把python的指向改为python3即可,Python3指向的是Python3.x
1 | sudo mv python python_backup |
gdal和rasterio安装
下载二进制包,通过pip安装,网址:gdal 和 rasterio,下载 GDAL
和 rasterio
包,然后 pip 安装。
- gdal 安装
1
pip3 install C:\Users\liu\Downloads\GDAL-3.4.2-cp37-cp37m-win_amd64.whl
- rasterio 安装
1
pip3 install C:\Users\liu\Downloads\rasterio-1.2.10-cp37-cp37m-win_amd64.whl
pycache文件夹问题
运行脚本时添加 -B 参数
1 | python -B foo.py |
Latex中python代码高亮显示
Latex中高亮显示 python 看 Hight python in Latex, The package is loaded by the following line:
1 | \usepackage{pythonhighlight} |
It is then possible to include a Python snippet directly in the code using:
1 | def f(x): |
It is also possible to include inline Python code in LaTeX with \lstinline{\pyth}:
1 | The special method \pyth{__init__}... |
Last but not least, you can load an external Python file with:
1 | \inputpython{python_file.py}{23}{50} |
to display the contents of the file $python_file$ from line 23 to line 50.
jupyter notebook
Jupyter Notebook介绍、安装及使用教程,REF
1 | 1. 安装jupyter |
linux 下命令行运行 python 脚本
脚本方式
方法是在.py文件的第一行加上下面的任意一行:
1 | #!/usr/bin/python |
二者的区别在于:
- !/usr/bin/python是告诉操作系统在调用脚本时调用/usr/bin目录下的python解释器,python解释器的路径被明确给出。
- !/usr/bin/env python是为了防止用户没有将python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到env设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。
!/usr/bin/env python会去环境设置寻找python目录通常推荐第二种写法。需要再次强调的是,上述解析路径应该放在Python 脚本的第一行。
交互式方式
在linux命令行模式中运行python,进入python交互式环境,写程序后直接输出结果。
python命令行调试
1 | python -m pdb test2.py |
windows 环境
前期准备
首先你需要有一台电脑 然后你需要保证这个电脑是干净的:没有额外安装 Python (因为之前安装过 Python 的原因导致我之后又重新装了一遍 Miniconda),没有安装miniconda/conda这些环境管理软件
miniconda安装
建议从清华的镜像源下载,官网下载的速度极慢。
清华镜像源:anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorMiniconda官网:Miniconda — Conda documentation 从镜像源中选择时间最晚的一个 latest 版本的即可 !
- 安装(默认安装即可)
环境变量配置
电脑
- 属性
- 高级系统设置
- 高级
- 环境变量
- 对 path
进行设置,新建
环境变量
1 | D:\miniconda3 |
验证是否安装成功
conda info
conda 换源
由于 miniconda 下载文件/依赖库等默认的采用国外的服务器,下载速度一言难尽,一般改为国内的清华源/阿里源等方式解决。我这里安装的是清华的源。conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes # 生成".condarc"文件
虚拟环境设置
conda create –n py38 python=3.8
查看 conda 已有虚拟环境
conda info -e
conda env list
创建虚拟环境
conda create -n "envName" python=3.8
激活环境
activate "envName"
conda activate "envName"
source activate "envName"
退出环境
conda deactivate "envName"
移除环境
conda remove -n "envName" --all
指定环境下安装包
conda list
conda install [packageName]
conda install -n py27numpy
conda search [packageName]
conda uninstall [packageName]
科学计算包
- numpy
- pandas
- scipy
- scikit-learn
绘图相关包
- matplotlib
- seaborn
jupyter notebook
- jupyter
- notebook
- ipykernel
- nb_conda_kernels
其他
- beautifulsoup4
- reportlab
参考文献:
ZHIHU
常见问题
Could not fetch URL https:// ssl
使用下面的命令pip3 install opencv-python-headless==4.6.0.66 -i https://pypi.douban.com/simple --trusted-host pypi.douban.com
- http://mirrors.aliyun.com/pypi/simple/ 阿里云
- https://pypi.mirrors.ustc.edu.cn/simple/ 中国科技大学
- http://pypi.douban.com/simple/ 豆瓣
- https://pypi.tuna.tsinghua.edu.cn/simple/ 清华大学
- http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
matplotlib中文显示
pyplot 并不默认支持中文显示,也没有自带中文字体,因此需要自行下载所需字体,并修改 rcParams 参数来显示中文。
系统 Ubuntu20.04,python3.8.10
- 下载并安装simhei
1 | pan/01_pei_liup/02_software/linux/simhei.ttf |
- 查看 matplotlib 的字体路径
1 | (pm25) liupei@asus:~/code/pm25$ python |
得到的路径是 matplotlib 参数预加载文件matplotlibrc的路径,则字体的存放路径为mpl-data/fonts/ttf。将下载好的字体文件复制到该目录下
- 删除 matplotlib 的缓冲目录
查看 matplotlib 的字体缓存路径:
1 | (pm25) liupei@asus:~/code/pm25$ python |
得到的路径如~/.cache/matplotlib
,在终端使用rm -rf ~/.cache/matplotlib
命令删除缓存目录。
这样做之后,在使用 matplotlib 绘图时,会自动生成新的缓存目录。
- 设置参数
使用 matplotlib 绘图时,添加以下几行代码:
1 | mpl.rcParams['font.family'] = ['SimHei'] |
参考文献:凌云飞鸿
Matplotlib is currently using agg, which is a non-GUI backend
Solution: install any of the matplotlib
supported GUI backends
- however you can also fix the issue by installing any of the matplolib GUI backends like
Qt5Agg
,GTKAgg
,Qt4Agg
, etc. - for example
pip install pyqt5
will fix the issue also
1 | pip install pyqt5 |
test using cat test.py
1 | import matplotlib |
如果出现错误: qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “ “ even though it was found.
sudo pacman -S tk
for arch or manjaro
sudo apt install python3-tk
for ubuntu
参考文献: stack over
‘index-url’ in section ‘global’ already exists
vim .config/pip/pip.conf
添加以下内容
1 | [global] |
UnicodeDecodeError: ‘gbk’ codec can’t decode
添加 ,encoding='utf-8'
参考文献:csdn
Python 学习项目
100 天学会机器学习
spectral环境配置
1 | conda install Numpy pillow wxPython matplotlib IPython PyOpenGL # supported spectral |
参考文献:
- spectral homepage
- github homepage
oc1环境配置
1 | mkdir oc1 |
gcForest
gcForest环境配置
1 | conda install argparse |
pytorch
pytorch安装 硬件cpu内存mem显卡(gpu)IP
1 | pip3 install torch torchvision -i https://pypi.mirrors.ustc.edu.cn/simple/ |
ccfs
Rainforth-Canonical Correlation Forests 参考文献.参考文献
CNN
- CNN环境配置
1 | conda create -n cnn python=3.5 |
- cnn使用方法
1 | % 3. 修改 DataSet_Preparation_G.py, |
修改路径:CNN_G.py 中 m_path
1. patchsize.py 修改
2. IndianPinesCNN.py 修改
NUM_CLASSES = 16, 换数据改
CHANNELS = 220 (波段数),换数据改
weights = tf.get_variable(‘weights’, shape=[KERNEL_SIZE, KERNEL_SIZE, CHANNEL, conv1_channels], 换数 据改 (波段数 CHANNELS) % # Conv 1
z = tf.nn.conv2d(x_image, weights, strides=[1, 1, 1, 1], padding=’SAME‘), patchsize>1改为VALID
z = tf.nn.conv2d(h_pool1, weights, strides=[1, 1, 1, 1], padding=’SAME‘), patchsize>1改为VALID
3. DataSet_Preparation_G.py 修改
COUNT=200; 进行过采样之后每一个类别内的样本数目, 基本不改
OUTPUT_CLASSES=16; GT中类别数 (6),换数据改
TEST_FRAC = 0.25; 测试数据百分比, 基本不改
input_mat=scipy.io.loadmat(os.path.join(DATA_PATH,’gf1.mat’))[‘gf1’],换数据-文件夹改
target_mat =scipy.io.loadmat(os.path.join(DATA_PATH,’gf1_gt.mat’))‘gf1_gt’,换数据-文件夹改
TRAIN_PATCH = TRAIN_PATCH. reshape((-1,220,PATCH_SIZE,PATCH_SIZE)) ,[line 178:] (波段数)
注意修改循环次数,GT是通过ENVI ->roi2img ->window save as tif.
4. 修改 CNN_G.py,或, g_cnn.py … based on (a)
TRAIN_FILES = 8, [line 38:]
TEST_FILES = 6, [line 39:]
saver.save([line 225:] (路径m_path)
temp_ image = temp_ image. reshape (temp_ image. shape[0], IMAGE_ SIZE,IMAGE_ SIZE, 220 (波段数), [line 125:]
5. 修改 Decoder_G.py,或 g_decoder.py
from sklearn.metrics import accuracy_score, [line 1:]
input_mat=scipy.io.loadmat(os.path.join(DATA_PATH,’gyl321.mat‘))[‘gyl321‘], [line 24]
target_mat=scipy.io.loadmat(os.path.join(DATA_PATH,’gyl321gt.mat‘))[‘gyl321gt‘], [line 25]
注意修改循环类别个数
model_name = ‘model- spatial- CNN-11X11. ckpt-3999′ (patchsize), [line 28:]
在运行完一个patch_size的值之后,最好文件夹下面所生成的 checkpoint 文件和__pycache__ 文件 删掉,不然会影响不同值的运行.
tr
- 配置 pip 源,加快下载速度
1 | pip config list |
- 安装软件
python版本为3.7
1 | pip3 install torch torchvision -i https://pypi.mirrors.ustc.edu.cn/simple/ |
beancount
hledger
pytorch 安装并配置GPU
- 安装
参考文献
- 验证:
>>> import torch
>>> torch.__version__
>>> torch.cuda.is_available()
>>> torch.cuda.get_device_name(0)