最近在捣鼓Windows一些以前忽略,但买了阿里云后,又记起来的东西,然后有些东西确实想了很久,也挺有意义的,所以在这里分享一下。
第一种安装方式
利用pip去 https://pypi.org/ 官网拉取第三方模块,这个网站是pip能拉取到的所有第三方库的地方,当我们使用如下命令的时候,默认就是去该网址查找相应的模块,如果没有,则会安装失败。
>>>pip install PackageName / pip.exe install PackageName
或者是pip.exe,这两条命令是一致的。与之配套的一些常用命令还有:
>>>pip install -U PackageName # 更新模块
>>>pip uninstall PackageName # 卸载模块
>>>pip search PackageName # 搜寻模块
>>>pip help # 显示所有命令
...
第二种安装方式
使用easy_install安装,和上面的pip命令基本一致,根据官方的回答是easy_install比pip更古老,pip是在easy_install的基本上做了很多的优化,但对于模块来讲,越古老可能支持的第三方就越多,所以当pip无法安装的时候,可以考虑一下easy_install,说不定就可以安装。
>>>easy_install PackageName
但这里需要注意的是,如果我们要查看当前的easy_install的版本与安装路径,不像pip,直接输入就可以,easy_install会报错:
>>>easy_install
error: No urls, filenames, or requirements specified (see --help)
所以这里的命令是这样的:
>>>easy_install virtualenv
Searching for virtualenv
Best match: virtualenv 16.1.0
Adding virtualenv 16.1.0 to easy-install.pth file
Installing virtualenv-script.py script to E:\anaconda\Scripts
Installing virtualenv.exe script to E:\anaconda\Scripts
Using e:\anaconda\lib\site-packages
Processing dependencies for virtualenv
Finished processing dependencies for virtualenv
这样就能查询出本地的easy_install环境了,另外easy_install的命令和pip基本都是一致的,那么这即是第二种方式的拉取,下面就介绍怎么自定义安装。
第三种安装方式
setup.py的安装方式,进入当前setup.py的目录下,输入如下命令:
>>>python setup.py install
不知道读者们有没有发现,当我们在github上下载别人的源码时,有时候在最外层会有一个setup.py的文件,我当时是很疑惑的,后来看了相关的解释才知道这个是别人自定义的一个模块安装文件,我们只需要通过pip安装就可以了。
那么我就照着一些例子,写了一个模板出来,以后应该可以用得到。
#coding:utf-8
# pip <= 9.0
try:
from pip.req import parse_requirements
# pip > 9.0-
except:
from pip._internal.req import parse_requirements
"""
pip的版本分水岭是在9,如果要自定义安装,9以上的是后者,以下是前者,所以做了一个Try,为了适配所有版本
"""
from setuptools import find_packages, setup
with open('./version.txt', 'r') as f:
version = f.read()
"""
读入自定义的版本号,一般都是从0.1开始,到1则为稳定,表示可能即将上线的版本
"""
setup(
name='MyBlog', # 模块名称
version=version, # 版本号
description='This is myblog,welcome ', # 描述
packages=find_packages(exclude=[]), # 获取代码里所有的package
author='submarineas',
author_email='1004995307@qq.com',
license='Apache License v2', # 软件授权协议, GPL、BSD、APL,可以看看这几种授权的区别,各有各的限制
package_data={'': ['*.*']},
url='#',
install_requires=[str(ir.req) for ir in parse_requirements("requirements.txt", session=False)],#所需的运行环境
zip_safe=False, # 安装后在windows上卸载不会报错
classifiers=[
'Programming Language :: Python',
'Operating System :: Microsoft :: Windows',
'Operating System :: Unix',
'Operating System :: GNU/Linux',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
],
)
可以运行我们的测试用例为:
另外就是setup包的常用参数如下,可以根据需求选择制作一个怎样的第三方模块:
参数 | 说明 |
name | 包名称 |
version | 包版本 |
author | 程序的作者 |
author_email | 程序的作者的邮箱地址 |
maintainer | 维护者 |
maintainer_email | 维护者的邮箱地址 |
url | 程序的官网地址 |
license | 程序的授权信息 |
description | 程序的简单描述 |
long_description | 程序的详细描述 |
platforms | 程序适用的软件平台列表 |
classifiers | 程序的所属分类列表 |
keywords | 程序的关键字列表 |
packages | 需要处理的包目录(通常为包含 init.py 的文件夹) |
py_modules | 需要打包的 Python 单文件列表 |
download_url | 程序的下载地址 |
cmdclass | 添加自定义命令 |
package_data | 指定包内需要包含的数据文件 |
include_package_data | 自动包含包内所有受版本控制(cvs/svn/git)的数据文件 |
exclude_package_data | 当 include_package_data 为 True 时该选项用于排除部分文件 |
data_files | 打包时需要打包的数据文件,如图片,配置文件等 |
ext_modules | 指定扩展模块 |
scripts | 指定可执行脚本,安装时脚本会被安装到系统 PATH 路径下 |
package_dir | 指定哪些目录下的文件被映射到哪个源码包 |
requires | 指定依赖的其他包 |
provides | 指定可以为哪些模块提供依赖 |
install_requires | 安装时需要安装的依赖包 |
entry_points | 动态发现服务和插件 |
setup_requires | 指定运行 setup.py 文件本身所依赖的包 |
dependency_links | 指定依赖包的下载地址 |
extras_require | 当前包的高级/额外特性需要依赖的分发包 |
zip_safe | 不压缩包,而是以目录的形式安装 |