文章目录
-
- 报错
-
- [报错 ERROR: *.whl is not a valid editable requirement. It should either be a path to a local project or a VCS URL (beginning with bzr+http, bzr+https, bzr+ssh, bzr+sftp, bzr+ftp, bzr+lp, bzr+file, git+http, git+https, git+ssh, git+git, git+file, hg+file, hg+http, hg+https, hg+ssh, hg+static-http, svn+ssh, svn+http, svn+https, svn+svn, svn+file).](#报错 ERROR: *.whl is not a valid editable requirement. It should either be a path to a local project or a VCS URL (beginning with bzr+http, bzr+https, bzr+ssh, bzr+sftp, bzr+ftp, bzr+lp, bzr+file, git+http, git+https, git+ssh, git+git, git+file, hg+file, hg+http, hg+https, hg+ssh, hg+static-http, svn+ssh, svn+http, svn+https, svn+svn, svn+file).)
类似于maven的打包功能,这样自己或别人就可以复用了。
本地打包whl
用一个例子来说明,例如打包一个加法工具。
1、新建一个项目,名称为:my_math_lib
2、创建文件夹my_math
(1)该文件夹下创建一个python文件,名为:__init__.py,内容如下:
bash
# my_math/__init__.py
from .calculator import add, add_list
# 定义包的版本
__version__ = "0.1.0"
(2)该文件夹下创建一个python文件,名为:calculator.py,内容如下:
bash
# my_math/calculator.py
def add(a, b):
"""
两个数相加
"""
return a + b
def add_list(numbers):
"""
列表求和
"""
return sum(numbers)
3、根目录下创建一个文件pyproject.toml,内容为:
bash
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "my-math-lib" # 【重要】发布到仓库后的包名 (通常用短横线)
version = "0.1.0" # 版本号
description = "一个简单的加法库"
authors = [{name = "YourName", email = "your@email.com"}]
readme = "README.md"
requires-python = ">=3.8"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
]
# 告诉 setuptools 去哪里找代码
[tool.setuptools.packages.find]
where = ["."] # 在当前目录查找
include = ["my_math*"] # 包含以 my_math 开头的文件夹
4、终端执行python -m build --wheel,会生成dist目录以及whl文件。
5、到另外一个项目中,安装该whl。
bash
pip install -e D:/PycharmProjects/my_math_lib
注:这里是路径,不是具体的whl文件,否则会报错。
6、在另外一个项目中新建test.py,内容如下:
bash
import my_math
result = my_math.add(10, 20)
print(f"10 + 20 = {result}")
# 如果配置了 __init__.py 导出,也可以直接:
# from my_math import add
7、运行test.py,实测成功了。
报错
报错 ERROR: *.whl is not a valid editable requirement. It should either be a path to a local project or a VCS URL (beginning with bzr+http, bzr+https, bzr+ssh, bzr+sftp, bzr+ftp, bzr+lp, bzr+file, git+http, git+https, git+ssh, git+git, git+file, hg+file, hg+http, hg+https, hg+ssh, hg+static-http, svn+ssh, svn+http, svn+https, svn+svn, svn+file).
重点就是这句: It should either be a path to a local project or a VCS URL
意思是不是一个具体whl文件,还是whl所在的项目路径。