// 参考链接们
官方文档,参考文档1,参考文档2,
// 可能遇到的问题们
400 - file already exists
上传时候指定版本号
499 - client disconnected
网络问题,多试几次
403 - isn't allowed to upload to project
改个包名试一试
更多问题还请多搜索搜索
// 预先的环境
#1.安装好python3,pip
#2.安装wheel
pip install wheel #否则会出现invalid command 'bdist_wheel
#3.安装twine
pip install twine #上传包到pypi用的
#4.注册pypi.org账号,并验证邮箱
#4.配置~/.pypirc文件,~对应linux用户home目录,windows用户C:\Users\账户名,内容用下面折叠的代码
[distutils]
index-servers=pypi
[pypi]
repository=https://upload.pypi.org/legacy/
username=
password=
View Code
// 提示
1.看官方文档如果能解决问题,就不要看这篇笔记,这里面是个人理解,可能有偏差。
2.setup.py,中的setup函数的每个参数在官方文档里面都有说明,setup(name="",这个name就是你的模块(脚本)的package-name,这个不能重复,否则无法上传。
3.除了官方文档,通过python交互模式help("setuptools.setup"), help("setuptools.find_packages")也能获取一点的帮助。
4.在预先环境中的.pypirc文件中我并没有写下我的pypi.org账号密码,而是在上传的时候手动指定的。
5.下面demo中的setup.py中的entry_points的console_scripts是指定安装自己的包后,在控制台输入命令执行什么代码,我的是'just-rename = lhnrenamer.rename:main',就是在cmd中运行just-rename就运行包lhnrenamer下rename文件的main函数。
6.重申一遍,我这个demo中setup.py,setup(name="just-rename", just-rename是我上传到pypi.org的包名,和我实际代码中的模块(package)名称lhnrenamer不一致没关系,应为just-rename下可能有很多类似lhnrename这个的package.
7.更新代码后几点更新版本号,重新构建并上传,twine上传的时候指定好文件的版本号。
// demo
2.文件路径截图
3.rename.py
importosimportreimportsys#遍历文件夹
defwalkFile(workdir,pattern,replacement):for dirpath, dirnames, filenames inos.walk(os.path.realpath(workdir)):#遍历文件
for f infilenames:
doRename(workdir,f,pattern,replacement)#执行重命名
defdoRename(workdir,filename,pattern,replaceMent):
workdir=os.path.realpath(workdir)
matcies= re.search(pattern, filename, flags=0)print("<=" +os.path.join(workdir, filename))ifmatcies:
newFileName= re.sub(pattern, replaceMent, filename, count=0, flags=0)
old_name=os.path.join(workdir, filename)
new_name=os.path.join(workdir, newFileName)print("=>" + old_name + "\t--->\t"+new_name)
os.rename(old_name,new_name)else:print("no match")defmain():if(len(sys.argv) < 4):print("just-rename ")returnworkdir= sys.argv[1]
pattern= sys.argv[2]
replacement= sys.argv[3]print("--"*10)print("workdir:\t"+workdir)print("pattern:\t"+pattern)print("replacement:\t"+replacement)print("--"*10)
walkFile(workdir,pattern,replacement)if __name__ == '__main__':
main()
View Code
4.setup.py
#-*- coding: utf-8 -*-
from setuptools importsetup, find_packages
with open("README.md", "r", encoding="utf-8") as fh:
long_description=fh.read()#with open('requirements.txt', "r", encoding="utf-8") as f:#requires = f.read().splitlines()
setup(
name= "just-rename",
packages= find_packages(where='.'),
version= "1.0.3",
entry_points={"console_scripts": ['just-rename = lhnrenamer.rename:main']
},
description= "just-rename, batch rename filenames, all scripts will be written with Python3",
author= "lhnonline",
author_email= "0376lhn@gmail.com",
license= "GPLv3",
url= "http://github.com/lhnonline/renamer",#install_requires = requires,
include_package_data=True,
zip_safe=True,
exclude_package_data= {'': ['__pycache__']},#download_url = "",
keywords = [ "renamer", "batch rename filenames with regex support", "just-rename"],
classifiers=["Programming Language :: Python","Programming Language :: Python :: 3","License :: OSI Approved :: GNU General Public License v3 (GPLv3)","Operating System :: OS Independent"],
long_description=long_description,
long_description_content_type="text/markdown",
)
View Code
5.准备好代码
6.构建你的代码(请确保你的setup.py中的name,你的包名未被使用,否则上传的时候会提示The user '你的账户名称' isn't allowed to upload to project '你的setup中name的值,这个值被人用了')
python setup.py sdist bdist_wheel
7.上传你的代码
twine upload -u 你的pypi用户名 -p 你的pypi密码 dist/你要上传的文件 #如果你更新了代码,记得更新setup.py中的版本号,重新构建你的代码,再次上传就好了。
8.通过pip 就可以安装了
pip install just-rename
# 如果有更新可以更新
pipinstall just-rename --upgrade
# 也可以无情的删除
pip uninstall just-rename
9.也可到pipy.org看看
// last but not least
1. 如何给模块加上文档,还不会。。。
2.如果恰好你也需要批量给文件改名,可以pip install just-rename试一试。