最近在捣鼓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',
    ],
)

可以运行我们的测试用例为:

python安装模块报错 python 安装模块_python

另外就是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

不压缩包,而是以目录的形式安装