Python包管理与编辑器

通常Python入门,很多情况都是直接在IDLE上敲代码,但是这个IDLE又没有补全,又没有赏心悦目的界面,这就很郁闷了….

于是,对于编辑器,这就好好选择了。

安装Anaconda

这是Python的一个包管理器,通过它,你可以十分轻松地对Python的包进行管理(安装与卸载)。(这包就是Python的生命呀,还不好好地弄好)

因为Python有2和3,相互又有点不兼容,所以Anaconda也有对应Python2和Python3的版本。地址在这里

在装完Anaconda时,同时它会自动帮你装上Python,所以之前如果有单独装过Python的,就可以卸掉了。

Anaconda环境变量

此电脑->右键选择属性->高级系统设置->环境变量->系统变量->path添加anaconda的安装路径。即可在任意终端中打开python

出现“conda 不是内部命令”的情况,则需要将anaconda安装目录下的Scripts也加入到系统变量中,步骤同上,就可以解决

安装PyCharm

PyCharm是一个十分优秀的Python编辑器,虽然它的包比较大,运行的时候较为占用资源。但是它在编码以及调试的时候能提高不少效率。因为PyCharm只是编辑器,所以也就没有版本之分了。

http://www.jetbrains.com/pycharm/download/#section=windows
Community版免费,已经足够使用了(良心企业)。

一开始使用PyCharm可能挺难上手,但是用惯了以后则会慢慢享受起来了~

使用Anaconda安装Python的包(模块)

在windows的搜索中(开始键+s,还有各种搜索方法),可以找到这个

点开以后,会有如下界面(有些高级点的Anaconda Navigator 有交互界面,,,那个另说啦)

以最常见的numpy包为例,只要输入

1
conda install numpy

或者

1
pip install numpy

就能安装(推荐使用pip安装,还有忘了pip要不要事先安装了- -)

因为很多时候安装的包从国外下载,就会特别慢,所以换成国内的镜像(国外资源在国内的复制品的感觉吧),速度就嗖嗖嗖的

于是在命令改为

1
2
pip install numpy -i https://pypi.douban.com/simple
-i 后面的参数是更换的镜像源的地址,使用豆瓣的源

至此,如无意外,就能好好装包了,import ~~~

pip 换源

但是每次都加参数,很是不方便,可以修改配置文件使得永久生效。

windows:
直接在user\xx目录(xx为用户名)中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下:

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

Linux:
修改 ~/.pip/pip.conf (没有就创建一个), 内容如下:

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

使用PyCharm

建立工程

Location:工程放到哪里
Interpreter:解析器,选择Anaconda的,不然刚装的包没有用

新建Python文件

对左方文件夹右键,如图 然后键入文件名就好

敲代码

这不用说了吧?

运行代码

敲完代码以后,直接在代码框上右键找到run

或者右上角有个三角形的进行运行,不过甚是麻烦那个,就不说了。

运行结果在下面的框框中。

别的东西

下方栏中的几个工具:

跟原生IDLE差不多,具有交互功能(另外有个IPython的,具有补全功能的交互式IDLE)

然后这个

终端,,没什么好解释的,就是系统的那个黑色框框

如果程序需要外部运行时传入参数,用这个可以帮到你。

然后敲代码的时候,多按照PyCharm提示,调整自己的代码风格,我觉得是挺好的。

启用Gevent compatible debugging

最新版本的Pycharm中,若调试的过程中出现了unable to display frame variables,则在Settings->Python Debugger->Gevent compatible 前面打上勾。

Anaconda Navigator

具有交互式界面的Anaconda包管理器

在Home界面,

这个可以打开ipynb文件,一种可以改动的交互式笔记本,常用作教学使用(好吧,我编不下去了,自己百度吧,,,)

IPython,之前提过,Python原生交互式Shell的增强版,在平时试语法试函数等等常用,带自动补全。

跟Matlab特别想像的Python编辑器,可以查看变量之类的。(爬虫挺适合的吧)
在Environments可以浏览一堆Python包,选择安装。

其余就不细说了~~

Pyc文件反编译

最近想借鉴一下师兄的代码,但是苦于师兄只给了pyc文件,但是没有给py文件。在网上找到了可以通过pyc文件反编译出py文件的方法。自己试了试,感觉特别管用,所以在这里记录一下。

首先,安装uncompyle

1
pip install uncompyle

然后,我使用pip在mac os或者Ubuntu上安装好后的可执行文件名叫uncompyle6,很奇葩有没有

1
2
3
uncompyle6 --help 查看帮助
uncompyle6 models.pyc > models.py 将models.pyc反编译成py文件
uncompile -o . *.pyc 将当前文件夹中所有的pyc文件反编译成后缀名为.pyc_dis的源文件

反编译后的效果可以说很理想,如果你的代码格式符合PEP8规范的要求,那就基本和源来的文件一样,不过各种注释就没有了(不能要求太高是不是)。即使不符合PEP8规范,反编译的结果也很好。

解决pip报错

有的时候pip环境会严重错乱,出现了错误AttributeError: '_NamespacePath' object has no attribute 'sort'或者 ModuleNotFoundError: No module named 'pip._internal',网上有很多种解决该错误的方法,但是下面这种方法最有效。

1
2
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall

硬盘空间不足

当硬盘空间不足时,使用pip安装包时,会出现ERROR: Could not install packages due to an EnvironmentError: [Errno 28] No space left on device的错误,解决方法为:

1
TMPDIR=/data2/zhaodali/ pip install torch==1.1.0 torchvision==0.3.0  --cache-dir=/data2/zhaodali/ --build /data2/zhaodali

终端调试

使用ipdb调试,例如要调试的Python文件名为test.py,则运行下面语句即可开始调试。

1
python -m ipdb test.py

具体调试的常用命令可以查看相关手册,这里不再列出来。

需要注意的是,当文件中有中文时,调试时可能出现UnicodeEncodeError: 'ascii' codec can't encode characters in position 343-351: ordinal not in range(128)这样的错误,解决方法为,在~/.bash_profile文件中,添加一行:

1
export LANG="en_US.UTF-8"

保存退出后重新打开命令行控制台。

查看包依赖

1
2
3
4
5
6
7
8
9
10
11
(base) [zhaodali@zdaopt ~]$ pip show tensorflow-gpu
Name: tensorflow-gpu
Version: 1.14.0
Summary: TensorFlow is an open source machine learning framework for everyone.
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: packages@tensorflow.org
License: Apache 2.0
Location: /data4/zhaodali/anaconda36/lib/python3.6/site-packages
Requires: keras-applications, numpy, grpcio, six, protobuf, google-pasta, keras-preprocessing, tensorboard, termcolor, absl-py, tensorflow-estimator, gast, wrapt, wheel, astor
Required-by:

参考

Unable to display frame variables (PyCharm remote debugger)
pyc文件反编译到Python源码
ModuleNotFoundError: No module named ‘pip._internal’
【转】Python3中遇到UnicodeEncodeError: ‘ascii’ codec can’t encode characters in ordinal not in range(128)
[Errno 28] No space left on device #5816

------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道