Install
https://www.python.org/ftp/python/
https://mirrors.aliyun.com/python-release/
C:\Users\Administrator>python -V
Python 3.9.13
C:\Users\Administrator>pip list
Package Version
---------- -------
pip 22.0.4
setuptools 58.1.0
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
Writing to C:\Users\Administrator\AppData\Roaming\pip\pip.ini
PyCharm Community
(venv) D:\Backup\Documents\GitHub\pycode>pip list
Package Version
---------- -------
pip 21.3.1
setuptools 60.2.0
wheel 0.37.1
Install (Source)
pacman -S python-pip
yum install python3-pip
sudo apt install python3.11-venv
$ python3 --version
$ python3 -m venv vbuild
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
https://docs.posit.co/resources/install-python-source.html
yum builddep python3 // 报错
yum install @development
yum install wget yum-utils openssl-devel bzip2-devel libffi-devel zlib-devel
$ ./configure --prefix=/opt/python3
$ make -j8
$ make install
https://www.build-python-from-source.com/
cd /tmp/
wget https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tgz
tar xzf Python-3.13.2.tgz
cd Python-3.13.2
sudo ./configure --prefix=/opt/python/3.13.2/ --enable-optimizations --with-lto --with-computed-gotos --with-system-ffi
sudo make -j "$(nproc)"
sudo make altinstall
sudo rm /tmp/Python-3.13.2.tgz
wheel (poetry)
pip install poetry 很多依赖
https://python-poetry.org/docs/basic-usage/
https://pyloong.github.io/pythonic-project-guidelines/guidelines/project_management/distribution/#221
$ poetry new lfs
$ poetry build
$ vi lfs/__init__.py
def hello():
print("This is a test code.")
测试安装
python -m venv vtest
pip install dist/some-package.whl
>> import lfs
>> dir(lfs)
>> lfs.__path__
>> lfs.hello()
['/root/vtest/lib/python3.13/site-packages/lfs']
>> from lfs import hello
>> hello()
wheel (setup)
pip install wheel setuptools 两个单包
$ mkdir -p project/lfs && cd project
$ python setup.py bdist_wheel
$ python setup.py sdist
python setup.py bdist_wheel --universal 生成 py2.py3-none-any.whl
打包结果在project/dist/lfs-1.0-py3-none-any.whl
解压 unzip some-package.whl
解压 wheel unpack some-package.whl
{dist}-{version}(-{build})?-{python}-{abi}-{platform}.whl
参考
https://docs.pingcode.com/baike/782958
https://realpython.com/python-wheels/
project/setup.py
from setuptools import setup,find_packages
setup(
name="lfs",
author="slackman",
version="1.0",
author_email="r@e.com",
description="slackman@disroot.org",
long_description="long desc",
license='Apache2.0',
packages=['lfs'] # 重要:这是python项目文件夹的名字
)
详细配置 https://www.cnblogs.com/wztshine/p/16421459.html
import setuptools
setup(
name="lfs",
version="1.0",
author="slackman",
author_email="slackman@disroot.org",
description="A pipmodule package", # 简短的描述
long_description="long desc", # 详细描述
packages=find_packages(), # 自动查找所有__init__.py
url="https://www.slackman.cn",
classifiers=[
"Development Status :: 3 - Alpha", # 项目开发阶段
"Programming Language :: Python :: 3", # 编程语言
"License :: OSI Approved :: MIT License", # license
"Operating System :: OS Independent", # 操作系统
],
install_requires=[
"progress",
# "pytest>=3.3.1", # 也可以出依赖的具体版本
],
python_requires=">=3"
)
Console APP
第三方模块 click,typer
import click
import typer 基于click
内置模块 sys, argparse
import sys
def main():
if len(sys.argv) < 2:
print("Usage: python console.py <name>")
sys.exit(1)
name = sys.argv[1]
print(f'Hello, {name}')
if __name__ == '__main__':
cli()
python xxx.py Tom | python xxx.py Tom --times 3
import argparse
def cli():
parser = argparse.ArgumentParser(description="Greet someone by name.")
parser.add_argument("name", help='The name of person to greet.')
parser.add_argument("--times", type=int, default=1, help="Number of times to greet")
args = parser.parse_args()
for _ in range(args.times):
print(f'Hello, {args.name}!')
Desktop APP
Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。