标签归档:python-3

Pyinstaller-将Python程序打包为独立的可执行文件

PyInstaller概述

PyInstaller将Python应用程序及其所有依赖项捆绑到单个包中。用户无需安装Python解释器或任何模块即可运行打包的应用程序

文档: https://pyinstaller.readthedocs.io/
网站: http://www.pyinstaller.org/
代码: https://github.com/pyinstaller/pyinstaller

PyInstaller读取您编写的Python脚本。它分析您的代码以发现您的脚本执行所需的所有其他模块和库。然后,它会收集所有这些文件的副本–包括活动的Python解释器!–并将它们与脚本放在单个文件夹中,或者也可以放在单个可执行文件中

PyInstaller在Windows、MacOSX和GNU/Linux上进行了测试。但是,它不是交叉编译器:要制作Windows应用程序,您需要在Windows中运行PyInstaller;要制作GNU/Linux应用程序,需要在GNU/Linux等环境中运行它。PyInstaller已成功用于AIX、Solaris、FreeBSD和OpenBSD,但作为持续集成测试的一部分,没有针对它们进行测试

主要优势

  • 开箱即用,可与任何Python版本3.6-3.9配合使用
  • 完全多平台,利用操作系统支持加载动态库,确保完全兼容
  • 正确捆绑主要的Python包,如numpy、PyQt5、PySide2、Django、wxPython、matplotlib和其他开箱即用的包
  • 与许多开箱即用的第三方软件包兼容。(使外部包工作所需的所有技巧都已集成。)
  • 完全支持PyQt5、PySide2、wxPython、matplotlib或Django等库,无需手动处理插件或外部数据文件
  • 在OS X上使用代码签名
  • 在Windows上捆绑MS Visual C++DLL

安装

PyInstaller在PyPI上可用。您可以通过pip安装它:

pip install pyinstaller

要求和测试平台

  • 巨蟒:
  • 3.6-3.9
  • tinyaes1.0+(仅当使用字节码加密时)。与其安装天鹅座,pip install pyinstaller[encryption]取而代之的是
  • Windows(32位/64位):
  • PyInstaller应该可以在Windows 7或更新版本上运行,但我们只正式支持Windows 8+
  • 由于以下原因,当不使用虚拟环境时,我们不支持从Windows商店安装Pythonpermission errors那不是很容易修好的
  • GNU/Linux(32位/64位)
  • LDD:用于打印每个程序或共享库所需共享库的控制台应用程序。这通常可以在分发包glibc或libc-bin中找到
  • objdump:显示对象文件信息的控制台应用程序。这通常可以在分发包的binutils中找到
  • objcopy:复制和翻译目标文件的控制台应用程序。这通常也可以在分发包的binutils中找到
  • Mac OS X(64位):
  • Mac OS X 10.13(High Sierra)或更高版本

用法

基本用法非常简单,只需针对您的主脚本运行即可:

pyinstaller /path/to/yourscript.py

有关更多详细信息,请参阅manual

未经测试的平台

已经贡献了以下平台,欢迎对这些平台进行任何反馈或增强

  • FreeBSD
  • LDD
  • Solaris
  • LDD
  • 对象转储
  • AIX
  • AIX 6.1或更高版本。PyInstaller不能使用静态链接的Python库
  • LDD
  • PowerPC GNU/Linux(Debian)

在使用任何贡献的平台之前,您需要构建PyInstaller引导加载器,因为我们不提供二进制包。下载PyInstaller源代码,并构建引导加载器:

cd bootloader
python ./waf all

然后安装PyInstaller:

python setup.py install

或者直接从源代码(pyinstaller.py)使用它

支持

看见http://www.pyinstaller.org/support.html有关如何获得帮助以及商业支持的信息

此版本中的更改

您可以在以下位置找到此版本中更改的详细列表Changelog手册的一节

Pysheeet Python代码片段小抄

创建Pysheeet的目的是收集Python代码片段,以减少编码时间,使生活变得更容易、更快。欢迎任何投稿。请随时派生并向此项目发送拉取请求

Python 3中的新特性

这部分只提供Python3中一些重要特性的快速浏览。如果您对所有最重要的特性都感兴趣,请阅读官方文档。What’s New in Python

小抄

高级小抄

附录

PDF版本

pdf

如何运行服务器

$ virtualenv venv
$ . venv/bin/activate
$ pip install -r requirements.txt
$ make
$ python app.py

# URL: localhost:5000

Uvloop-超高速异步事件循环

uvloop是内置异步事件循环的快速插入式替代。uvloop是用Cython实现的,并在幕后使用libuv可以在以下位置找到项目文档here请同时查看wiki

性能

uvloop使异步速度提高2-4倍

上图显示了具有不同消息大小的回应服务器的性能。这个插座基准使用loop.sock_recv()loop.sock_sendall()方法;溪流Benchmark使用异步高级流,由asyncio.start_server()函数;以及协议基准使用loop.create_server()使用简单的回声协议。阅读有关uvloop的更多信息,请参阅blog post关于这件事

安装

uvloop需要Python 3.7或更高版本,并且在PyPI上可用。使用pip安装它:

$ pip install uvloop

请注意,强烈建议您升级pip之前使用以下命令安装uvloop:

$ pip install -U pip

使用uvloop

打电话uvloop.install()在打电话之前asyncio.run()或手动创建异步事件循环:

import asyncio
import uvloop

async def main():
    # Main entry-point.
    ...

uvloop.install()
asyncio.run(main())

从源构建

要构建uvloop,您需要Python 3.7或更高版本:

  1. 克隆存储库:
    $ git clone --recursive git@github.com:MagicStack/uvloop.git
    $ cd uvloop
    
  2. 创建虚拟环境并将其激活:
    $ python3.7 -m venv uvloop-dev
    $ source uvloop-dev/bin/activate
    
  3. 安装开发依赖项:
    $ pip install -e .[dev]
    
  4. 构建和运行测试:
    $ make
    $ make test
    

许可证

uvloop在MIT和Apache 2.0许可下双重许可

Discord.py-用Python编写的用于不一致的API包装器

一个现代的、易于使用的、功能丰富的、异步就绪的API包装器

主要功能

  • 现代Pythonic API使用asyncawait
  • 适当的速率限制处理
  • 100%覆盖支持的不一致API
  • 在速度和内存方面都进行了优化

正在安装

需要Python 3.8或更高版本

要在没有完全语音支持的情况下安装库,只需运行以下命令:

# Linux/macOS
python3 -m pip install -U discord.py

# Windows
py -3 -m pip install -U discord.py

否则,要获得语音支持,您应该运行以下命令:

# Linux/macOS
python3 -m pip install -U "discord.py[voice]"

# Windows
py -3 -m pip install -U discord.py[voice]

要安装开发版本,请执行以下操作:

$ git clone https://github.com/Rapptz/discord.py
$ cd discord.py
$ python3 -m pip install -U .[voice]

可选套餐

请注意,在Linux安装时,您必须通过您最喜欢的软件包管理器安装以下软件包(例如aptdnf等),然后再运行上述命令:

  • libffi-dev(或libffi-devel在某些系统上)
  • python-dev(例如python3.6-dev对于Python 3.6)

快速示例

import discord

class MyClient(discord.Client):
    async def on_ready(self):
        print('Logged on as', self.user)

    async def on_message(self, message):
        # don't respond to ourselves
        if message.author == self.user:
            return

        if message.content == 'ping':
            await message.channel.send('pong')

client = MyClient()
client.run('token')

BOT示例

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='>')

@bot.command()
async def ping(ctx):
    await ctx.send('pong')

bot.run('token')

您可以在Examples目录中找到更多示例

链接

TextBlob-简单、Python式的文本处理–情感分析、词性标记、名词短语提取、翻译等等

主页:https://textblob.readthedocs.io/

TextBlob是一个Python(2和3)库,用于处理文本数据。它提供了一个简单的API,用于深入研究常见的自然语言处理(NLP)任务,如词性标记、名词短语提取、情感分析、分类、翻译等

 

from textblob import TextBlob

text = '''
The titular threat of The Blob has always struck me as the ultimate movie
monster: an insatiably hungry, amoeba-like mass able to penetrate
virtually any safeguard, capable of--as a doomed doctor chillingly
describes it--"assimilating flesh on contact.
Snide comparisons to gelatin be damned, it's a concept with the most
devastating of potential consequences, not unlike the grey goo scenario
proposed by technological theorists fearful of
artificial intelligence run rampant.
'''

blob = TextBlob(text)
blob.tags           # [('The', 'DT'), ('titular', 'JJ'),
                    #  ('threat', 'NN'), ('of', 'IN'), ...]

blob.noun_phrases   # WordList(['titular threat', 'blob',
                    #            'ultimate movie monster',
                    #            'amoeba-like mass', ...])

for sentence in blob.sentences:
    print(sentence.sentiment.polarity)
# 0.060
# -0.341

TextBlob站在NLTKpattern,并且两者都玩得很好

功能

  • 名词短语提取
  • 词性标注
  • 情绪分析
  • 分类(朴素贝叶斯、决策树)
  • 标记化(将文本拆分成单词和句子)
  • 词频和词频
  • 解析
  • N元语法
  • 词形变化(复数和单数)与词汇化
  • 拼写更正
  • 通过扩展添加新模型或语言
  • Wordnet集成

现在就去拿吧

$ pip install -U textblob
$ python -m textblob.download_corpora

示例

查看更多示例,请参阅Quickstart guide

文档

有关完整文档,请访问https://textblob.readthedocs.io/

要求

  • Python>=2.7或>=3.5

项目链接

许可证

麻省理工学院有执照。请参阅捆绑的LICENSE有关更多详细信息,请提交文件

Borg-使用压缩和身份验证加密对服务器执行数据消除

更多截屏视频:installationadvanced usage

什么是BorgBackup?

BorgBackup(简称:Borg)是一个重复数据消除备份程序。或者,它支持压缩和经过身份验证的加密

Borg的主要目标是提供一种高效、安全的数据备份方式。由于只存储更改,因此使用的重复数据消除技术使Borg适用于日常备份。经过身份验证的加密技术使其适用于备份到不完全受信任的目标

请参阅installation manual或者,如果您已经下载了Borg,docs/installation.rst开始学习博格。还有一个offline documentation可用,有多种格式

主要特点

节省空间的存储
基于内容定义的区块的重复数据消除用于减少存储的字节数:每个文件被拆分成多个可变长度的区块,并且只有以前从未见过的区块才会添加到存储库中

如果一个块的id_hash值相同,则认为它是重复的。密码强散列或MAC函数用作id_hash,例如(HMAC-)sha256

要执行重复数据消除,将考虑同一存储库中的所有区块,无论它们来自不同的计算机、来自以前的备份、来自相同的备份,甚至来自相同的单个文件

与其他重复数据消除方法相比,此方法不依赖于:

  • 文件/目录名称保持不变:因此,即使在共享回收站的计算机之间,您也可以在不影响重复数据删除的情况下四处移动数据
  • 完整的文件或时间戳保持不变:如果大文件稍有更改,则只需存储几个新的区块-这对虚拟机或原始磁盘非常有用
  • 数据块在文件内的绝对位置:填充可能会发生移位,但重复数据消除算法仍会找到该位置
速度
  • 性能关键型代码(分块、压缩、加密)是用C/Cython实现的
  • 文件/块索引数据的本地缓存
  • 快速检测未修改的文件
数据加密
所有数据均可使用256位AES加密进行保护,数据完整性和真实性使用HMAC-SHA256进行验证。数据是加密的客户端
模糊处理
可选地,Borg可以主动地模糊例如文件/块的大小,以使指纹攻击更加困难
压缩
可以选择压缩所有数据:
  • LZ4(超高速、低压缩)
  • zstd(从高速低压缩到高压缩低速的大范围)
  • zlib(中速和压缩)
  • LZMA(低速、高压缩)
异地备份
Borg可以将数据存储在可通过SSH访问的任何远程主机上。如果在远程主机上安装了Borg,与使用网络文件系统(sshfs、nfs、.)相比,可以获得很大的性能提升。
可装载为文件系统的备份
备份归档可作为用户空间文件系统挂载,以便轻松进行交互式备份检查和恢复(例如,使用常规文件管理器)
在多个平台上轻松安装
我们提供不需要安装任何内容的单文件二进制文件-您只需在以下平台上运行它们:
  • Linux操作系统
  • Mac OS X
  • FreeBSD
  • OpenBSD和NetBSD(尚不支持xattrs/ACL或二进制文件)
  • Cygwin(试验性的,目前还没有二进制文件)
  • Windows 10的Linux子系统(实验性)
自由开放源码软件
  • 安全性和功能可以独立审核
  • 在BSD(3条款)许可下获得许可,请参阅License获取完整的许可证

易于使用

初始化新的备份存储库(请参见borg init --help对于加密选项):

$ borg init -e repokey /path/to/repo

创建备份存档:

$ borg create /path/to/repo::Saturday1 ~/Documents

现在再做一次备份,只是为了炫耀一下伟大的重复数据消除功能:

$ borg create -v --stats /path/to/repo::Saturday2 ~/Documents
-----------------------------------------------------------------------------
Archive name: Saturday2
Archive fingerprint: 622b7c53c...
Time (start): Sat, 2016-02-27 14:48:13
Time (end):   Sat, 2016-02-27 14:48:14
Duration: 0.88 seconds
Number of files: 163
-----------------------------------------------------------------------------
               Original size      Compressed size    Deduplicated size
This archive:        6.85 MB              6.85 MB             30.79 kB  <-- !
All archives:       13.69 MB             13.71 MB              6.88 MB

               Unique chunks         Total chunks
Chunk index:             167                  330
-----------------------------------------------------------------------------

有关图形前端,请参阅我们的补充项目BorgWeb

帮助,捐款,施舍,成为赞助人

我们随时欢迎您的帮助!

传播信息、提供反馈、帮助编写文档、测试或开发

你也可以给这个项目提供资金支持,详情请看那里:

https://www.borgbackup.org/support/fund.html

链接

兼容性说明

预计当主要版本号更改时(如从0.x.y到1.0.0或从1.x.y到2.0.0),我们会反复破坏兼容性

未发布的开发版本具有未知的兼容性属性

这是正在开发的软件,您自己决定它是否适合您的需求

安全问题应报告给Security contact(或参阅docs/support.rst在源代码分发中)

Pytudes-Python程序,通常很短,难度相当大,以完善特定的技能

Pytudes 是一种器乐作品,通常很短,难度很大,旨在为完善某一特定的音乐技能提供练习材料。

这是给谁的?

有些人认为编程就像Spotify:他们想知道如何安装应用程序,找到一个好的播放列表,然后点击“播放”按钮;之后他们就不想去想了。还有很多其他教程将告诉您如何针对各种编程任务执行与此相同的操作–这一篇不会有什么帮助。但是如果你把编程想成像弹钢琴一样–一门需要花费大量时间的手艺years为了完美-那我希望这套藏品能帮上忙

Jupyter(IPython)笔记本索引

编程示例
cdmng 2020年 Advent of Code 2020
cdmng 2018年 Advent of Code 2018
cdmng 2017年 Advent of Code 2017
cdmng 2016年 Advent of Code 2016
cdmng 2018年 Beal’s Conjecture Revisited
cdmng 2020年 Bicycling Statistics
cdmng 2018年 Can’t Stop
cdmng 2019年 Chaos with Triangles
cdmng 2017年 Conway’s Game of Life
cdmng 2020年 Generating and Solving Mazes
cdmng 2020年 Photo Focal Lengths
cdmng 2018年 Pickleball Tournament
cdmng 2017年 Project Euler Utilities
cdmng 2020年 Tracking Trump: Electoral Votes
逻辑与数字之谜
cdmng 2014年 Cryptarithmetic
cdmng 2018年 Euler’s Sum of Powers Conjecture
cdmng 2020年 Four 4s, Five 5s, and Countdowns
cdmng 2019年 Pairing Socks
cdmng 2018年 Sicherman Dice
cdmng 2014年 Sol Golomb’s Rectangle Puzzle
cdmng 2020年 Square Sum Puzzle
cdmng 2020年 When is Cheryl’s Birthday? (new: Mad Cheryl)
cdmng 2015年 When Cheryl Met Eve: A Birthday Story
cdmng 2015年 xkcd 1313: Regex Golf
cdmng 2015年 xkcd 1313: Regex Golf (Part 2: Infinite Problems)
“谜语者”(出自538)
cdmng 2017年 Battle Royale
cdmng 2021年 CrossProduct
cdmng 2020年 Flipping Cards; A Guessing Game
cdmng 2019年 Lottery
cdmng 2019年 How Many Soldiers to Beat the Night King?
cdmng 2017年 Misanthropic Neighbors
cdmng 2018年 Properly Ordered Card Hands
cdmng 2021年 Split the States
cdmng 2020年 Tour de 538
cdmng 2020年 Weighing Twelve Balls
cdmng 2020年 War. What is it Good For?
字谜
cdmng 2020年 Boggle / Inverse Boggle
cdmng 2020年 Chemical Element Spelling
cdmng 2020年 Equilength Numbers: FOUR = 4
cdmng 2017年 Gesture Typing
cdmng 2017年 Ghost: A Word game
cdmng 2018年 How to Do Things with Words: NLP in Python
cdmng 2020年 Jotto: A Word Guessing Game
cdmng 2015年 Let’s Code About Bike Locks
cdmng 2017年 Scrabble: Refactoring a Crossword Game Program
cdmng 2020年 Spelling Bee
cdmng 2017年 Translating English into Propositional Logic
cdmng 2017年 World’s Longest Palindrome
cdmng 2020年 World’s Shortest Portmantout Word
cdmng 2018年 xkcd 1970: Name Dominoes
概率与不确定性
cdmng 2018年 A Concrete Introduction to Probability
cdmng 2016年 Probability, Paradox, and the Reasonable Person Principle
cdmng 2020年 Estimating Probabilities with Simulations
cdmng 2019年 The Devil and the Coin Flip Game
cdmng 2020年 Dice Baseball
cdmng 2018年 Economics Simulation
cdmng 2012年 Poker Hand Ranking
cdmng 2020年 The Unfinished Game …. of Risk
cdmng 2019年 WWW: Who Will Win (NBA Title)?
计算机科学算法与概念
cdmng 2017年 Bad Grade, Good Experience
cdmng 2017年 BASIC Interpreter
cdmng 2017年 Convex Hull Problem
cdmng 2020年 How to Count Things
cdmng 2020年 Stable Matching Problem
cdmng 2017年 Symbolic Algebra, Simplification, and Differentiation
cdmng 2018年 Traveling Salesperson Problem

Python文件索引

文件 描述 文档
beal.py 寻找Beal猜想的反例 documentation
docex.py 用于运行单元测试的过时框架,类似于doctest
ibol.py 物种条形码练习 documentation
lettercount.py 将Google Ngram计数转换为字母计数 documentation
lis.py 用Python编写的LISP解释器 documentation
lispy.py 用Python编写的更好的Lisp解释器 documentation
lispytest.py 关于Lisp口译员的测试
pal.py 查找长回文 documentation
pal2.py 查找较长的回文 documentation
pal3.py 找到更长的回文 documentation
pytudes.py 预处理文本以生成此Readme.md文件
py2html.py Pretty-Printer将Python文件格式化为html
SET.py 分析纸牌游戏套装 documentation
spell.py 拼写校正器 documentation
sudoku.py 解决数独谜题的程序 documentation
testaccum.py 测试我失败的Pythonaccumulation display建议书 documentation
yaptu.py 还有另一个Python模板实用程序

面向程序员的练习课

我有了这个想法“练习曲”这个名字的一部分1978 book通过Charles Wetherell当我第一次学习编程时,这对我产生了很大的影响。我还留着我的那本