Python装逼指南——五行代码实现批量抠图

Python装逼指南——五行代码实现批量抠图

文 | 闲欢

来源:Python 技术「ID: pythonall」

Python装逼指南——五行代码实现批量抠图

你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游?专业点的人使用 PhotoShop 的“魔棒”工具可以抠图,非专业人士可以使用各种美图 APP 来实现,但是他们毕竟处理能力有限,一次只能处理一张图片,而且比较复杂的图像可能耗时较久。今天我来向大家展示第三种途径——用 Python 一键批量抠图。

准备工作

 

既然要装逼,准备工作是少不了的。所谓“站在巨人的肩膀上,做事事半功倍”,我们这里的“巨人”就是 paddlepaddle 了,中文名称叫“飞桨”,那么这个 paddlepaddle 是什么呢?

它是“源于产业实践的开源深度学习平台,致力于让深度学习技术的创新与应用更简单”,直白点就是我帮你实现了深度学习底层框架,你只要有创意就可以在我平台上运用少量简单代码轻松实现。它的官网是 https://www.paddlepaddle.org.cn/ 。

它的安装也比较简单,官网首页就有安装指引,我们这里根据官网的安装指引,使用 pip 方式来安装 CPU 版本。

我们首先执行语句:

python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

安装成功后,我们在 python 环境中测试一下是否安装成功(这个也是按照官网指引来做),我们切换到 python 环境,运行如下代码:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 201823:26:24
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help""copyright""credits" or "license" for more information.
>>> import paddle.fluid
>>> paddle.fluid.install_check.run_check()
Running Verify Paddle Program ... 
Your Paddle works well on SINGLE GPU or CPU.
I0506 21:47:48.657404 2923565952 parallel_executor.cc:440] The Program will be executed on CPU using ParallelExecutor, 2 cards are used, so 2 programs are executed in parallel.
W0506 21:47:48.658407 2923565952 fuse_all_reduce_op_pass.cc:74] Find all_reduce operators: 2. To make the speed faster, some all_reduce ops are fused during training, after fusion, the number of all_reduce ops is 1.
I0506 21:47:48.658516 2923565952 build_strategy.cc:365] SeqOnlyAllReduceOps:0, num_trainers:1
I0506 21:47:48.659137 2923565952 parallel_executor.cc:307] Inplace strategy is enabled, when build_strategy.enable_inplace = True
I0506 21:47:48.659595 2923565952 parallel_executor.cc:375] Garbage collection strategy is enabled, when FLAGS_eager_delete_tensor_gb = 0
Your Paddle works well on MUTIPLE GPU or CPU.
Your Paddle is installed successfully! Let's start deep Learning with Paddle now
>>> 

看到 Your Paddle is installed successfully 就表示安装成功了。

我们接下来需要使用的是这个平台的 paddlehub 工具,所以我们还需要安装 paddlehub :

pip install -i https://mirror.baidu.com/pypi/simple paddlehub

安装完成后,我们就可以开始运用了。

代码实现

 

我们的实现步骤很简单:导入模块 -> 加载模型 -> 获取图片文件 -> 调用模块抠图。

下面我们看代码实现:

import os, paddlehub as hub
huseg = hub.Module(name='deeplabv3p_xception65_humanseg'# 加载模型
path = './imgs/' # 文件目录
files = [path + i for i in os.listdir(path)] # 获取文件列表
results = huseg.segmentation(data={'image': files}) # 抠图

我将图片放在代码文件夹的同级目录 imgs 文件夹下,运行代码后,输出的抠图图片会自动放在代码同级目录的 humanseg_output 目录下,文件名称跟原图片的名称相同,但是文件格式是 png 。

我在 imgs 目录下放了5张图片,为了便于展示,我将他们放在一起截图:

 

Python装逼指南——五行代码实现批量抠图

原图片

 

运行程序后,在 humanseg_output 目录下生成了5张图片,同样的,我将他们放在一起截图:

 

Python装逼指南——五行代码实现批量抠图

抠图图片

 

我们可以看到程序将每张图片中的人物(可以是一个,也可以是多个)识别出来,并且抠出来成图,背景是白色。虽然有些细节处还有些许瑕疵,但是看起来还算不错。

总结

 

本文基于 paddlepaddle 平台,使用简单的五行代码实现了批量抠图,不仅解放了好多人的双手和双眼,而且为某些程序猿/程序媛的装逼工具箱提供了一件宝器。下次如果碰到某个女生或者闺蜜在为抠图发愁,别忘了掏出神器,赢得芳心哦!

转自:https://mp.weixin.qq.com/s/0K1YiR_tCnfg65ZoN8QUqQ

微软官方再次上线了Python教程,这次比较高级

来自:程序员书库(ID:CodingBook)

链接https://cloudblogs.microsoft.com/opensource/2020/05/04/more-python-for-beginners-videos/

去年九月份,微软针对 Python 初学者,推出了一套免费的教程视频。该视频由微软高级项目经理 Christopher Harrison、以及微软 AI Gaming 的商业开发经理 Susan Ibach 共同讲解。主要介绍了Python相关的常见功能,目前的播放量已经达到181万。

微软官方再次上线了Python教程,这次比较高级

看到视频如此受大家欢迎,微软决定再度更新两个针对 Python 初学者的系列教程,作为对之前教程的补充,一共有两大课程。该系列由微软高级项目经理 Christopher Harrison 和微软 AI 游戏部门业务开发经理 Susan Ibach 进行讲解。
第一门课程名为“ More Python for Beginners ”,纯粹是关于Python的。该课程将研究一些Python中级知识,诸如lambda和面向对象的编程等。这一系列课程共有20个视频,每个视频时长在2-15分钟不等。

微软官方再次上线了Python教程,这次比较高级

第二门课程名为“Even More Python for Beginners: Data Tools”,它将带你使用Python进入数据科学和机器学习。虽然课程里面不会讨论选择算法或构建模型的问题,但是会重点介绍Jupyter Notebooks,这是数据科学家最喜欢的工具之一。
除此之外,几个常见的库也会涉及到:诸如NumPy和pandas,它们可以帮助你管理数据。你还将学习如何在内存中创建表,以及如何加载,保存和操作数据。最后还会教你如何使用Scikit-learn创建模型并绘制图表。
事不宜迟,奉上前3课视频大家体验一下:

More Python for Beginners【1】

More Python for Beginners【2】

More Python for Beginners【3】

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

 

文 | 某某白米饭

来源:Python 技术「ID: pythonall」

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

psutil 是一个跨平台库(http://pythonhosted.org/psutil)能够获取到系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。主要用来做系统监控,性能分析,进程管理。支持 Linux、Mac OS、Windows 系统。

本文以 psutil 模块获取系统信息开发一个监控 Mac OS 系统的平台。

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

准备工作

技术选择

  • 监控的系统是 Mac OS 系统
  • 监控系统模块选择 psutil 模块
  • Web 框架选择的是 Flask 框架
  • 前端 UI 选择的是 Bootstrap UI
  • 动态可视化图表选择 Pyecharts 模块

安装 psutil

  •  
pip3 install psutil

安装 Flask、pyecharts、Bootstrap

  • Flask 的教程是在公众号文章:Web 开发 Flask 介绍
  • Pyecharts 的教程在公众号文章:Python 图表利器 pyecharts,按照官网 (http://pyecharts.org/#/zh-cn/web_flask) 文档整合 Flask 框架,并使用定时全量更新图表。
  • Bootstrap 是一个 前端的 Web UI,官网地址是 (https://v4.bootcss.com)

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

获取系统信息

CPU信息

通过 psutil 获取 CPU 信息

>>> import psutil
# 获取当前 CPU 的利用率>>> psutil.cpu_percent()53.8
# 获取当前 CPU 的用户/系统/空闲时间>>> psutil.cpu_times()scputimes(user=197483.49, nice=0.0, system=114213.01, idle=1942295.68)
# 1/5/15 分钟之内的 CPU 负载>>> psutil.getloadavg()(7.865234375, 5.1826171875, 4.37353515625)
# CPU 逻辑个数>>> psutil.cpu_count()4
# CPU 物理个数>>> psutil.cpu_count(logical=False)2

在监控平台上每 2 秒请求 url 获取 CPU 负载,并动态显示图表

cpu_percent_dict = {}def cpu():    # 当前时间    now = time.strftime('%H:%M:%S', time.localtime(time.time()))    #  CPU 负载    cpu_percent = psutil.cpu_percent()    cpu_percent_dict[now] = cpu_percent
# 保持在图表中 10 个数据 if len(cpu_percent_dict.keys()) == 11: cpu_percent_dict.pop(list(cpu_percent_dict.keys())[0])
def cpu_line() -> Line: cpu() # 全量更新 pyecharts 图表 c = ( Line() .add_xaxis(list(cpu_percent_dict.keys())) .add_yaxis('', list(cpu_percent_dict.values()), areastyle_opts=opts.AreaStyleOpts(opacity=0.5)) .set_global_opts(title_opts=opts.TitleOpts(title = now + "CPU负载",pos_left = "center"), yaxis_opts=opts.AxisOpts(min_=0,max_=100,split_number=10,type_="value", name='%')) ) return c
@app.route("/cpu")def get_cpu_chart(): c = cpu_line() return c.dump_options_with_quotes()

示例结果

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

内存

通过 psutil 获取内存和交换区信息

# 系统内存信息 总内存/立刻可用给进程使用的内存/内存负载/已使用内存/空闲内存/当前正在使用或者最近使用的内存/未使用的内存/永久在内存>>> psutil.virtual_memory()svmem(total=8589934592, available=2610610176, percent=69.6, used=4251074560, free=387874816, active=2219110400, inactive=2069094400, wired=2031964160)
# 交换区内存 总内存/使用的内存/空闲的内存/负载/系统从磁盘交换进来的字节数(累计)/系统从磁盘中交换的字节数(累积)>>> psutil.swap_memory()sswap(total=2147483648, used=834404352, free=1313079296, percent=38.9, sin=328911147008, sout=3249750016)

在监控平台上每 2 秒请求 url 获取内存负载,并动态显示图表

def memory():    memory = psutil.virtual_memory()    swap = psutil.swap_memory()    # 在 Mac OS 上 未使用内存 = 总内存 - (空闲内存 + 未使用内存)    return memory.total, memory.total - (memory.free + memory.inactive), memory.free + memory.inactive, swap.total, swap.used, swap.free, memory.percent

def memory_liquid() -> Gauge: mtotal, mused, mfree, stotal, sused, sfree, mpercent = memory() c = ( Gauge() .add("", [("", mpercent)]) .set_global_opts(title_opts=opts.TitleOpts(title="内存负载", pos_left = "center")) ) return mtotal, mused, mfree, stotal, sused, sfree, c
@app.route("/memory")def get_memory_chart(): mtotal, mused, mfree, stotal, sused, sfree, c = memory_liquid() return jsonify({'mtotal': mtotal, 'mused': mused, 'mfree': mfree, 'stotal': stotal, 'sused': sused, 'sfree': sfree, 'liquid': c.dump_options_with_quotes()})

示例结果

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

磁盘

通过 psutil 获取磁盘大小、分区、使用率和磁盘IO

# 磁盘分区情况>>> psutil.disk_partitions()[sdiskpart(device='/dev/disk1s5', mountpoint='/', fstype='apfs', opts='ro,local,rootfs,dovolfs,journaled,multilabel'), sdiskpart(device='/dev/disk1s1', mountpoint='/System/Volumes/Data', fstype='apfs', opts='rw,local,dovolfs,dontbrowse,journaled,multilabel'), sdiskpart(device='/dev/disk1s4', mountpoint='/private/var/vm', fstype='apfs', opts='rw,local,dovolfs,dontbrowse,journaled,multilabel'), sdiskpart(device='/dev/disk1s3', mountpoint='/Volumes/Recovery', fstype='apfs', opts='rw,local,dovolfs,dontbrowse,journaled,multilabel')]
# 磁盘的使用情况 磁盘总大小/已使用大小/空闲大小/负载>>> psutil.disk_usage('/')sdiskusage(total=250790436864, used=10872418304, free=39636717568, percent=21.5)
# 磁盘IO 读取次数/写入次数/读取数据/写入数据/磁盘读取所花费的时间/写入磁盘所花费的时间>>> psutil.disk_io_counters()sdiskio(read_count=26404943, write_count=11097500, read_bytes=609467826688, write_bytes=464322912256, read_time=7030486, write_time=2681553)

在监控平台上每 2 秒请求 url 获取磁盘信息,并动态显示图表

disk_dict = {'disk_time':[], 'write_bytes': [], 'read_bytes': [], 'pre_write_bytes': 0, 'pre_read_bytes': 0, 'len': -1}def disk():    disk_usage = psutil.disk_usage('/')    disk_used = 0    # 磁盘已使用大小 = 每个分区的总和    partitions = psutil.disk_partitions()    for partition in partitions:        partition_disk_usage = psutil.disk_usage(partition[1])        disk_used = partition_disk_usage.used + disk_used
now = time.strftime('%H:%M:%S', time.localtime(time.time())) count = psutil.disk_io_counters() read_bytes = count.read_bytes write_bytes = count.write_bytes # 第一次请求 if disk_dict['len'] == -1: disk_dict['pre_write_bytes'] = write_bytes disk_dict['pre_read_bytes'] = read_bytes disk_dict['len'] = 0 return disk_usage.total, disk_used, disk_usage.free # 当前速率=现在写入/读取的总字节-前一次请求写入/读取的总字节 disk_dict['write_bytes'].append((write_bytes - disk_dict['pre_write_bytes'])/1024) disk_dict['read_bytes'].append((read_bytes - disk_dict['pre_read_bytes'])/ 1024) disk_dict['disk_time'].append(now) disk_dict['len'] = disk_dict['len'] + 1 # 把现在写入/读取的总字节放入前一个请求的变量中 disk_dict['pre_write_bytes'] = write_bytes disk_dict['pre_read_bytes'] = read_bytes # 保持在图表中 50 个数据 if disk_dict['len'] == 51: disk_dict['write_bytes'].pop(0) disk_dict['read_bytes'].pop(0) disk_dict['disk_time'].pop(0) disk_dict['len'] = disk_dict['len'] - 1
return disk_usage.total, disk_used, disk_usage.free

def disk_line() -> Line: total, used, free = disk() c = ( Line(init_opts=opts.InitOpts(width="1680px", height="800px")) .add_xaxis(xaxis_data=disk_dict['disk_time']) .add_yaxis( series_name="写入数据", y_axis=disk_dict['write_bytes'], areastyle_opts=opts.AreaStyleOpts(opacity=0.5), linestyle_opts=opts.LineStyleOpts(), label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="读取数据", y_axis=disk_dict['read_bytes'], yaxis_index=1, areastyle_opts=opts.AreaStyleOpts(opacity=0.5), linestyle_opts=opts.LineStyleOpts(), label_opts=opts.LabelOpts(is_show=False), ) .extend_axis( yaxis=opts.AxisOpts( name_location="start", type_="value", is_inverse=True, axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), name='KB/2S' ) ) .set_global_opts( title_opts=opts.TitleOpts( title="磁盘IO", pos_left="center", pos_top="top", ), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), legend_opts=opts.LegendOpts(pos_left="left"), xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), yaxis_opts=opts.AxisOpts( type_="value", name='KB/2S'), ) .set_series_opts( axisline_opts=opts.AxisLineOpts(), ) )
return total, used, free, c
@app.route("/disk")def get_disk_chart(): total, used, free, c = disk_line() return jsonify({'total': total, 'used': used, 'free': free, 'line': c.dump_options_with_quotes()})

示例结果

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

网卡

通过 psutil 获取网络接口和网络连接的信息

# 获取网络字节数和包的个数 发送的字节数/收到的字节数/发送的包数/收到的包数>>> psutil.net_io_counters()snetio(bytes_sent=9257984, bytes_recv=231398400, packets_sent=93319, packets_recv=189501, errin=0, errout=0, dropin=0, dropout=0)
# 获取当前的网络连接 注意:net_connections() 需要用管理员权限运行 Python 文件>>> psutil.net_connections()[sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='192.168.5.31', port=50541), raddr=addr(ip='17.248.159.145', port=443), status='ESTABLISHED', pid=1897), sconn(fd=12, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='192.168.5.31', port=50543), raddr=addr(ip='17.250.120.9', port=443), status='ESTABLISHED', pid=1897), sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='0.0.0.0', port=0), raddr=(), status='NONE', pid=1790),sconn(fd=10, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='0.0.0.0', port=0), raddr=(), status='NONE', pid=1790),sconn(fd=11, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='0.0.0.0', port=0), raddr=(), status='NONE', pid=1790),...sconn(fd=30, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='0.0.0.0', port=137), raddr=(), status='NONE', pid=1),sconn(fd=31, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='0.0.0.0', port=138), raddr=(), status='NONE', pid=1)]
# 获取网络接口信息>>> psutil.net_if_addrs(){'lo0': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 30>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 30>, address='fe80::1%lo0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None)], ..., 'utun1': [snicaddr(family=<AddressFamily.AF_INET6: 30>, address='fe80::b519:e5df:2bd4:857e%utun1', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None)]}
# 获取网络接口的状态>>> psutil.net_if_stats(){'lo0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=16384), ...'utun1': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=2000)}

在监控平台上每 2 秒请求 url 获取网卡IO,并动态显示图表

net_io_dict = {'net_io_time':[], 'net_io_sent': [], 'net_io_recv': [], 'pre_sent': 0, 'pre_recv': 0, 'len': -1}def net_io():    now = time.strftime('%H:%M:%S', time.localtime(time.time()))    # 获取网络信息    count = psutil.net_io_counters()    g_sent = count.bytes_sent    g_recv = count.bytes_recv
# 第一次请求 if net_io_dict['len'] == -1: net_io_dict['pre_sent'] = g_sent net_io_dict['pre_recv'] = g_recv net_io_dict['len'] = 0 return
# 当前网络发送/接收的字节速率 = 现在网络发送/接收的总字节 - 前一次请求网络发送/接收的总字节 net_io_dict['net_io_sent'].append(g_sent - net_io_dict['pre_sent']) net_io_dict['net_io_recv'].append(g_recv - net_io_dict['pre_recv']) net_io_dict['net_io_time'].append(now) net_io_dict['len'] = net_io_dict['len'] + 1
net_io_dict['pre_sent'] = g_sent net_io_dict['pre_recv'] = g_recv
# 保持在图表中 10 个数据 if net_io_dict['len'] == 11: net_io_dict['net_io_sent'].pop(0) net_io_dict['net_io_recv'].pop(0) net_io_dict['net_io_time'].pop(0) net_io_dict['len'] = net_io_dict['len'] - 1

def net_io_line() -> Line: net_io()
c = ( Line() .add_xaxis(net_io_dict['net_io_time']) .add_yaxis("发送字节数", net_io_dict['net_io_sent'], is_smooth=True) .add_yaxis("接收字节数", net_io_dict['net_io_recv'], is_smooth=True) .set_series_opts( areastyle_opts=opts.AreaStyleOpts(opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts( title_opts=opts.TitleOpts(title="网卡IO/2秒"), xaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_align_with_label=True), is_scale=False, boundary_gap=False, ), )) return c
@app.route("/netio")def get_net_io_chart(): c = net_io_line() return c.dump_options_with_quotes()

示例结果

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

进程

通过 psutil 可以获取所有进程的信息

  •  
# 所有进程的 pid>>> psutil.pids()[0, 1, 134, 135, 138, 139, 140, 141, 144, 145, 147, 152, ..., 30400, 97792]
# 单个进程>>> p = psutil.Process(30400)
# 名称>>> p.name()'pycharm'
# 使用内存负载>>> p.memory_percent()12.838459014892578
# 启动时间>>> p.create_time()1587029962.493182
# 路径>>> p.exe()'/Applications/PyCharm.app/Contents/MacOS/pycharm'
# 状态>>> p.status()'running'
# 用户名>>> p.username()'imeng'
# 内存信息>>> p.memory_info()pmem(rss=1093005312, vms=9914318848, pfaults=7813313, pageins=8448)

列出所有不需要权限的进程

def process():    result = []    process_list = []    pid = psutil.pids()    for k, i in enumerate(pid):        try:            proc = psutil.Process(i)            ctime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(proc.create_time()))            process_list.append((str(i), proc.name(), proc.cpu_percent(), proc.memory_percent(), ctime))        except psutil.AccessDenied:            # 需要管理员权限            pass        except psutil.NoSuchProcess:            pass        except SystemError:            pass                # 按负载排序        process_list.sort(key=process_sort, reverse=True)
for i in process_list: result.append({'PID': i[0], 'name': i[1], 'cpu': i[2], 'mem': "%.2f%%"%i[3], 'ctime': i[4]})
return jsonify({'list', result})
def process_sort(elem): return elem[3]
@app.route("/process")def get_process_tab(): c = process() return c
@app.route("/delprocess")def del_process(): pid = request.args.get("pid") os.kill(int(pid), signal.SIGKILL) return jsonify({'status': 'OK'})

示例结果

Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控

process.gif

总结

本文以 Psutil + Flask + Pyecharts + Bootstrap 开发一个简单的系统监控平台,可以算做是本公众号内容的一个学以致用。在 Psutil 还有许多方法文章没有列举感兴趣的小伙伴可以去尝试并使用。

转自:https://mp.weixin.qq.com/s/RLTZrS6YMhV2Y5KyZRhcqQ

让你的Pycharm和电脑 pip下载速度飞起来!

 

转自:Python进击者

作者:kuls

 

前言

有很多朋友刚刚学Python的时候,会来问为什么pip下载东西这么慢啊?pycharm里面下载库也是非常的慢。这其实是个常识性的问题,我们下载的慢是因为Python使用pip方法安装第三方包时,需要从 https://pypi.org/ 资源库中下载。这个网站是国外的服务器,访问自然就很慢,但是国内有很多的镜像站,所谓镜像站就是内容一样,只不过服务器在国内,访问速度自然而然就很快了。下面给大家普及一下如何修改pip的下载源以及pycharm的下载源。

电脑修改下载源

在国内,比较火的就是下面这几个下载源:

阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣 http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

我使用的是清华大学的下载源,因为速度很快,而且每五分钟就会更新一次。所以非常的可靠。

这里我会介绍mac/Linux/windows系统的修改方式(mac和Linux是一样的)

1.mac/Linux

1.1 临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

其中some-package就是你所需要安装的第三方库。上面的网址一定要正确,一字不漏!

1.2 永久修改

修改 ~/.pip/pip.conf,根据个人使用经验,有些朋友没有这个文件,甚至没有这个目录,这个时候我们先创建这个目录然后创建这个文件进行编写:

1.创建目录
mkdir ~/.pip
2.创建并编辑文件
vim ~/.pip/pip.conf

将文件中的内容填写或者修改为下面的内容:

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

index-url指的是你需要更换的下载源,上面已经提供了很多的下载源了,可以直接填进去。

填写后按ESC,输入wq! ,保存退出。

此时我们去使用pip下载东西,使用的是清华源了。

让你的Pycharm和电脑 pip下载速度飞起来!

2.windows

2.1 临时使用

Windows的临时使用和mac是同样的方法。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

其中some-package就是你所需要安装的第三方库。上面的网址一定要正确,一字不漏!

2.2 永久使用

  1. 直接在user目录中创建一个pip目录,如:C:Usersxxxpip
  2. 新建文件pip.ini
  3. 输入以下内容:

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

让你的Pycharm和电脑 pip下载速度飞起来!

这样就OK了!

 

pycharm修改下载源

有一些朋友是直接在pycharm的环境下安装库的,这样也有一定的好处就是不会导致电脑的环境比较混乱。那如何修改pycharm的下载源呢?

  1. 进入设置
让你的Pycharm和电脑 pip下载速度飞起来!
  1. 到达上图界面,随意双击任意一个库
让你的Pycharm和电脑 pip下载速度飞起来!
  1. 到达下面这个界面后,点击Manage Repositories
让你的Pycharm和电脑 pip下载速度飞起来!
  1. 添加下载源地址
让你的Pycharm和电脑 pip下载速度飞起来!

这样就可以将pycharm的下载源更换为国内下载源。

 

- end -

转自:https://mp.weixin.qq.com/s/uEWVHOVos_Fh1_TQ86J7Eg

GitHub 热门:Python 学习 100 天

最近 GitHub 热榜上持续有一个这样的 Python 项目,自称「100天从新手到大师」。目前 Star 数量已有 19000 多。

 

GitHub 热门:Python 学习 100 天

作者在开头列出了 Python 的一些应用领域

GitHub 热门:Python 学习 100 天

作者的计划目录

 

  • Day01~15 – Python语言基础
  • Day16~20 – Python语言进阶
  • Day21~30 – Web前端入门
  • Day31~35 – 玩转Linux操作系统
  • Day36~40 – 数据库基础和进阶
  • Day41~55 – 实战Django
  • Day56~60 – 实战Flask
  • Day61~65 – 实战Tornado
  • Day66~75 – 爬虫开发
  • Day76~90 – 数据处理和机器学习
  • Day91~100 – 团队项目开发

 

各阶段的内容,已经很多了。感兴趣的,可以看看:

https://github.com/jackfrued/Python-100-Days

转自:https://mp.weixin.qq.com/s/7iOaW7KPycsobO62ePcZUg