python使用的一些小技巧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python使用的一些小技巧相关的知识,希望对你有一定的参考价值。
0. 简介
在使用python程序保时。我们最常遇到的就是使用sudo apt-get install
或者pip install
的方式来完成python包的安装。但是有些时候我们需要对函数包进行改动,这时候很多人就会选择使用源码进行安装。一般会找到setup.py
文件并完成:
python setup.py build
python setup.py install
但是编者在尝试安装时发现有些库只提供了pip安装,同时我们也没有setup.py文件来使用。这时我们可以先通过pip完成安装然后去安装的路径下替换文件即可,下面我们将详细说明。
1. dist-packages和site-packages
dist-packages和site-packages本质上没有很大的区别主要的还是编译的方式的不同。
- sudo apt-get install 安装的package存放在/usr/lib/python3.8/dist-packages目录中
- pip 或者 easy_install安装的package存放在/usr/local/lib/python3.8/dist-packages目录中
- 手动从源代码安装的package存放在/usr/local/lib/python3.8/site-packages 目录中
- 手动从源代码或者pip install --user安装的package存放在./local/lib/python3.8/site-packages目录中
一般来说,自己手动安装的python包的优先级比系统安装的优先级高,这就意味着如果一个包安装了而不同版本,那么优先手动安装的版本。如果从源码安装包,那么安装的位置也要选择./local/lib/python3.8/site-packages
中便于包的管理。当然你也可以安装到你喜欢的位置,但是要把包的路径添加到python的库搜索路径中,方法会在下面提到。
我们在编译时候可以发现安装成功的代码都在/usr/local/lib/python3.8/dist-packages/
中。然后可以找到对应的安装的包,然后就可以将对应的包替换掉即可,这样省去了自己编写setup.py的步骤,属于另一种即插即用的方式。
3. 通过sys.path导入包
当我们想利用的包在工程的其他目录时,我们需要将该路径添加到系统的搜索路径中,有两种方式:
第一种方式是将包的绝对路径添加到系统的搜索路径中,只需调用sys.path.insert(pos,dir)
或者sys.path.append(dir)
,这种方式添加是硬链接到你的代码,只在程序运行时有效,但是这种方式在代码部署时需要手工改动代码中的所有路径,不推荐这种方式。
第二种方式就是将该路径添加到python的默认搜索路径中,有两种方式可以实现。
- 在系统变量PYTHONPATH中添加该路径
- 在
.local/lib/pyhon2.7/site-packages/
下的.pth下添加该目录
我们推荐第二种方式,因为这样在代码部署时我们只需要改动路径的配置文件即可。
4. python代码加密之pyc
- 对于py文件,可以执行下面命令来生成pyc文件
python -m foo.py
- 另外一种方式是通过python代码来生成pyc文件。
import py_compile
py_compile.compile(/path/to/foo.py)
- python批量生成pyc文件。python提供了一个模块叫compileall:
import compileall
compileall.compile_dir(r/path)
5. 包的分发
如果你想将包封装可以尝试:
projectname/
README.txt
Doc/
documentation.txt
projectname/
__init__.py
foo.py
bar.py
utils/
__init__.py
spam.py
grok.py
examples/
helloworld.py
...
首先你要编写一个setup.py,类似下面这样:
# setup.py
# setup.py
import os
from setuptools import setup, find_packages
__version__ = 1.0 # 版本号
requirements = open(requirements.txt).readlines() # 依赖文件
setup(
name = projectname, # 在pip中显示的项目名称
version = __version__,
author = Dechin,
author_email = dechin.phy@gmail.com,
url = ,
description = ts: Test Setup,
packages = find_packages(exclude=["projectname", projectname.utils]), # 项目中需要拷贝到指定路径的文件夹
python_requires = >=3.5.0,
install_requires = requirements # 安装依赖
)
)
创建一个MANIFEST.in
文件,列出所有在你的包中需要包含进来的非源码文件:
# MANIFEST.in
include *.txt
recursive-include examples *
recursive-include Doc *
确保setup.py
和MANIFEST.in
文件放在你的包的最顶级目录中。一旦你已经做了这些,你就可以像下面这样执行命令来创建一个源码分发包了:
python setup.py sdist
它会创建一个文件比如projectname-1.0.zip或projectname-1.0.tar.gz,具体依赖于你的系统平台。如果一切正常,这个文件就可以发送给别人使用或者上传至Python Package Index.
6. 参考链接
https://hpzhao.github.io/2016/07/24/Python%E6%A8%A1%E5%9D%97%E4%B8%8E%E5%8C%85/
以上是关于python使用的一些小技巧的主要内容,如果未能解决你的问题,请参考以下文章