
conda环境配置
安装conda
wget -c https://repo.anaconda.com/archive/Anaconda2-2019.10-Linux-x86_64.sh --no-check-certificate
chmod 744 Anaconda2-2018.12-Linux-x86_64.sh
bash Anaconda2-2018.12-Linux-x86_64.sh
卸载与修改conda源
卸载conda
# 卸载 anaconda
rm -rf ~/anaconda2
conda修改源
(清华源)
# anaconda修改镜像源(conda源)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
# 查看当前情况
[liupei@tx]$ cat .condarc
[liupei@tx]$ conda config --show channels
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
show_channel_urls: true
# 恢复默认channel
conda config --remove-key channels
验证conda帮助
conda安装后验证等
conda -V
python -V
conda update conda
conda -h
conda环境管理
conda已安装环境查看等
# 取消启动base
conda config --set auto_activate_base false
conda config --set auto_activate_base true
conda env list
conda create -n py2 python=2.7
conda create -n py3 python=3.7
conda activate py3
conda deactivate
conda create --name py2 --clone python2
conda remove --name py2 --all
conda包管理
包安装卸载升级
conda list
conda install pandas
pip install pandas
conda remove pandas
conda remove --name python2 pandas
conda upgrade --all
conda upgrade pandas
包批量安装(pip,conda)
#输出已经安装的所有包的包名和版本信息
pip freeze
#将上述结果输出重定向到requirements.txt文件中保存
pip freeze > requirements.txt
#批量安装requirements.txt中指定的包
pip install -r requirements.txt
#conda 批量导出
conda list -e > requirements.txt
# conda 批量安装
conda install --yes --file requirements.txt
# or
conda env export > py36.yaml
conda env create -f py36.yaml
wsl环境配置
wsl安装及配置参考:wsl安装
pip安装
Ubuntu 20.04 LTS 自带 Python 3.8.10, 只需简单修改python默认版本即可。
还可以下两个工具:
pip (用于 Python 的标准包管理器) ,以及venv(用于创建和管理轻型虚拟环境的标准模块)
pip安装-ubuntu
安装 pip : sudo apt install python3-pip
安装 venv :sudo apt install python3-venv
参考文献:萌宅鹿
pip安装-archlinux
通过ensurepip module安装pip
python -m ensurepip --upgrade
参考文献:南方老F
vim自动补全python
1. 下载Pydiction
2156 mkdir -p .vim/bundle
2157 cd .vim/bundle/
2158 git clone https://github.com/rkulla/pydiction.git
2. 配置Pydiction
2160 cp -r ~/.vim/bundle/pydiction/after/ ~/.vim
3. 在.vimrc文件添加如下配置
filetype plugin on
let g:pydiction_location = '~/.vim/bundle/pydiction/complete-dict'
let g:pydiction_menu_height = 20
参考文献:wengyupeng
virtualenv配置虚拟环境
virtualenv 是一个创建隔绝的Python环境的 工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。
virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。参考文献。
通过pip安装virtualenv:
sudo apt install python3-pip
pip install virtualenv
export PATH=/home/liupei/.local/bin:$PATH
virtualenv --version
virtualenv project 将会在当前的目录中创建一个文件夹,包含了Python可执行文件, 以及 pip 库的一份拷贝,这样就能安装其他包了。虚拟环境的名字(此例中是 project ) 可以是任意的;若省略名字将会把文件均放在当前目录。
virtualenv 创建虚拟环境
liupei@mac:~$ mkdir test
liupei@mac:~$ cd test/
liupei@mac:~$ virtualenv project
liupei@mac:~$ virtualenv -p /usr/bin/python2.7 project
liupei@mac:~$ virtualenv --no-site-packages project
New python executable in /root/test/project/bin/python
Installing setuptools, pip, wheel...
done.
#查看当前默认的版本
liupei@mac:~$ python -V
#激活虚拟环境:
liupei@mac:~$ source project/bin/activate
#关闭虚拟环境:
(project) liupei@mac:~$ deactivate
# 要删除一个虚拟环境,只需删除它的文件夹即可
rm -rf project
# 环境重建
(project) liupei@mac:~$ pip freeze > requirements.txt
(project) liupei@mac:~$ pip install -r requirements.txt
##
virtualenv -h
查看python帮助
Linux直接查看
Python3自带的帮助文档,REF
u@lab:~$ pydoc -p 8000
Server ready at http://localhost:8000/
Server commands: [b]rowser, [q]uit
server>
打开浏览器,在地址栏输入 http://localhost:8000/
如果要查看Python3.5的文档
pydoc3 -p 8000
在控制台查看
,REF
iupei@T470:~$ python
Python 2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 19:04:19)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help()
help> modules
输入要查看的module,如numpy
help> numpy
python命令行调试
python -m pdb test2.py
(Pdb) b 8 # 第8行设置断点
(Pdb) b # 显示所有断点
(Pdb) cl 2 # 清楚第2行断点
(Pdb) n # 下一步(遇函数不进入)
(Pdb) s # 下一步(遇函数进入)
(Pdb) r # 一直运行到函数返回
(Pdb) c # 继续运行直到断点或结束
(Pdb) j 10 # 跳转到第10行
(Pdb) p para #打印变量para
(Pdb) l # 列出脚本清单
(Pdb) a # 打印当前函数参数
(Pdb) h # 查看pdb帮助
(Pdb) q # 退出pdb
(Pdb) w # 查看所在的位置
python导入路径
sys.path.insert(0, "/home/u/gcForest/lib")
自定义第三方库
一般安装Python的三方库,直接使用conda或Python的包管理工具pip,或下载源码包后,使用其中的setup.py安装,就可以直接安装在Python的系统库目录中了。
如果想使用一个三方库,又不想安装在Python的默认库目录中,可以程序中使用”sys.path.append(“具体路径”)”将三方库路径暂时加入库路径。如果想操作一次,之后任何程序都可以直接使用,比如自己写的库?以linux系统conda环境为例,示例如下:
建立自己的库
mkdir libpy && vim libpy/liu.py
wsl@t470:~$ head libpy/liu.py
def testme():
print('hello world')
把三方库路径写入”.pth”文件
wsl@t470:~$ vim anaconda2/lib/python2.7/site-packages/x.pth
# 添加内容 /home/wsl/libpy
查看python默认路径
conda下python默认路径文件
wsl@t470:~$ python
Python 2.7.16 |Anaconda, Inc.| (default, Sep 24 2019, 21:51:30)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/wsl/anaconda2/lib/python27.zip', '/home/wsl/anaconda2/lib/python2.7', '/home/wsl/anaconda2/lib/python2.7/plat-linux2', '/home/wsl/anaconda2/lib/python2.7/lib-tk', '/home/wsl/anaconda2/lib/python2.7/lib-old', '/home/wsl/anaconda2/lib/python2.7/lib-dynload', '/home/wsl/anaconda2/lib/python2.7/site-packages', '/home/wsl/anaconda2/lib/python2.7/site-packages', '/home/wsl/libpy']
调用三方库
调用自己python库函数
wsl@t470:~$ python
Python 2.7.16 |Anaconda, Inc.| (default, Sep 24 2019, 21:51:30)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from liu import testme
>>> testme()
hello world
>>>
小例子
调用liu.py库,实现pkl格式自动转换为mat格式
# pkl2mat
def pkl2mat(filename):
"trans .pkl to .mat filename: obia7.pkl"
print('original image will be shown...');
DATA_PATH= os.path.join(os.getcwd(),"Data")
input_mat=scipy.io.loadmat(os.path.join(DATA_PATH,'gf1.mat'))['gf1']
padIn = np.zeros((input_mat.shape[0]+3*2,input_mat.shape[1]+3*2,input_mat.shape[2]))
for i in range(input_mat.shape[2]):
padIn[:,:,i] = np.pad(input_mat[:,:,i],((3,3),(3,3)),'constant',constant_values = (0,0))
input_mat = padIn;
outpath=os.getcwd();
print('predicted image will be trans...');
with open(os.path.join(outpath,filename),'rb') as f:
predicted_image=pkl.load(f)
scipy.io.savemat(os.path.join(outpath,filename+'.mat'),mdict={'predicted_image':predicted_image})
# main.py
(cnn) wsl@t470:~/work$ cat main.py
from liu import pkl2mat
import sys
if __name__=="__main__":
pkl2mat(sys.argv[1])
# run main.py
(cnn) wsl@t470:~/work$ python main.py obia23.pkl
original image will be shown...
predicted image will be trans...
其他问题
非管理员安装python
download python: https://www.python.org/downloads/release
cd directory and
./configure --prefix=/users/installed/python2.7
make install
# add $PATH
vim .bashrc
export xport PATH=/public3/home/ch_cumtlp3/installed/python2.7/bin:$PATH
source .bashrc
python -V
更改python默认版本
- 打开终端,输入python,可以看到当前系统中默认的python版本是 2.7.12
- 进入”/usr/bin”目录下,输入”ls -l | grep python”显示所有名字中包含python的文件
- 只要把python的指向改为python3即可,Python3指向的是Python3.x
sudo mv python python_backup
sudo ln -s /usr/bin/python3 /usr/bin/python
再执行Python命令,可以看到默认版本已经改成Python3.x.x了
pycache文件夹问题
运行脚本时添加 -B 参数
python -B foo.py
Latex中python代码高亮显示
Latex中高亮显示 python 看 Hight python in Latex, The package is loaded by the following line:
\usepackage{pythonhighlight}
It is then possible to include a Python snippet directly in the code using:
def f(x):
return x
It is also possible to include inline Python code in LaTeX with \lstinline{\pyth}:
The special method \pyth{__init__}...
Last but not least, you can load an external Python file with:
\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
# 安装jupyter
pip install jupyter
conda install jupyter notebook
# 配准环境 IPython
from notebook.auth import passwd
passwd()
# c.NotebookApp.password = 'sha1:6e4d6f95274c:b1144336cc77d78c31c195cfd2a249e37845f75d'
c.NotebookApp.password='sha1:58ff51f6de2f:c6f429e0f8e2566e5185cedc817f5cc30f53746a'
c.NotebookApp.ip = '::'
c.NotebookApp.port = 9999
# 使用 local
jupyter notebook --config=jupyter_config.py
pip常用命令
修改 pip 源
#修改 ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
#命令行修改源:
chennybaba:~ $ pip3 config set global.index-url https://pypi.douban.com/simple/
查看当前源
pip3 config list
常用源
https://pypi.tuna.tsinghua.edu.cn/simple/
http://mirrors.aliyun.com/pypi/simple/
https://pypi.mirrors.ustc.edu.cn/simple/
https://pypi.douban.com/simple/
linux 下命令行运行 python 脚本
脚本方式
方法是在.py文件的第一行加上下面的任意一行:
#!/usr/bin/python
#!/usr/bin/env 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交互式环境,写程序后直接输出结果。
常见问题
matplotlib中文显示
pyplot 并不默认支持中文显示,也没有自带中文字体,因此需要自行下载所需字体,并修改 rcParams 参数来显示中文。
系统 Ubuntu20.04,python3.8.10
- 下载并安装simhei
pan/01_pei_liup/02_software/linux/simhei.ttf
sudo cp simhei /usr/share/fonts/
sudo mkfontscale
sudo mkfontdir
fc-cache -fv
fc-list :lang=zh
2. 查看 matplotlib 的字体路径
(pm25) liupei@asus:~/code/pm25$ python
Python 3.8.10 (default, Sep 28 2021, 16:10:42)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print(matplotlib.matplotlib_fname())
/home/liupei/code/pm25/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc
>>>
得到的路径是 matplotlib 参数预加载文件matplotlibrc的路径,则字体的存放路径为mpl-data/fonts/ttf。将下载好的字体文件复制到该目录下
3. 删除 matplotlib 的缓冲目录
查看 matplotlib 的字体缓存路径:
(pm25) liupei@asus:~/code/pm25$ python
Python 3.8.10 (default, Sep 28 2021, 16:10:42)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print(matplotlib.get_cachedir())
/home/liupei/.cache/matplotlib
>>>
得到的路径如~/.cache/matplotlib
,在终端使用rm -rf ~/.cache/matplotlib
命令删除缓存目录。
这样做之后,在使用 matplotlib 绘图时,会自动生成新的缓存目录。
4. 设置参数
使用 matplotlib 绘图时,添加以下几行代码:
mpl.rcParams['font.family'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.size'] = 8
sns.set(font_scale=0.8,font='SimHei')
# sns.set_style('whitegrid',{'font.sans-serif':['ukai','Book']})
dfData = data.corr()
sns.heatmap(dfData, annot=True, vmax=1, square=True, cmap="Blues")
# plt.savefig('./BluesStateRelation.png')
plt.show()
参考文献:凌云飞鸿