我致力于将 Python 3.5 类型提示添加到响应库中。但是当我测试制作发行版时,
sdist
或
bdist_wheel
,它不会安装我的
.pyi
文件。我可以看到它是发行版的一部分,但它并没有比这更进一步。
您可以在此处查看我在我的存储库中获得的内容: https://github.com/gaqzi/responses/tree /feature/type-hints-file
我读过 PEP484,其中提到存根文件应该是可分发的。 但我似乎不知道如何分发。 :) 是否存在问题,因为响应未创建包?它只是一个模块文件,这就是为什么它没有正确添加的原因?
构建包时我看到的内容:
安装包后,我得到了这个:
% python setup.py sdist
running sdist
running egg_info
writing requirements to responses.egg-info/requires.txt
writing top-level names to responses.egg-info/top_level.txt
writing responses.egg-info/PKG-INFO
writing dependency_links to responses.egg-info/dependency_links.txt
reading manifest file 'responses.egg-info/SOURCES.txt'
writing manifest file 'responses.egg-info/SOURCES.txt'
running check
warning: check: missing meta-data: if 'author' supplied, 'author_email' must be supplied too
creating responses-0.6.0
creating responses-0.6.0/responses.egg-info
making hard links in responses-0.6.0...
hard linking README.rst -> responses-0.6.0
hard linking responses.py -> responses-0.6.0
hard linking responses.pyi -> responses-0.6.0
hard linking setup.cfg -> responses-0.6.0
hard linking setup.py -> responses-0.6.0
hard linking responses.egg-info/PKG-INFO -> responses-0.6.0/responses.egg-info
hard linking responses.egg-info/SOURCES.txt -> responses-0.6.0/responses.egg-info
hard linking responses.egg-info/dependency_links.txt -> responses-0.6.0/responses.egg-info
hard linking responses.egg-info/not-zip-safe -> responses-0.6.0/responses.egg-info
hard linking responses.egg-info/requires.txt -> responses-0.6.0/responses.egg-info
hard linking responses.egg-info/top_level.txt -> responses-0.6.0/responses.egg-info
copying setup.cfg -> responses-0.6.0
Writing responses-0.6.0/setup.cfg
Creating tar archive
removing 'responses-0.6.0' (and everything under it)
After I've installed the package I got this:
% pip install dist/responses-0.6.0.tar.gz
[...snip...]
Installing collected packages: responses
Successfully installed responses-0.6.0
% pwd
/Users/ba/.virtualenvs/responses/lib/python3.5/site-packages
% ls responses*
responses.py
responses-0.6.0.dist-info:
DESCRIPTION.rst METADATA RECORD WHEEL metadata.json top_level.txt
将类型提示与库一起分发到 PyPI 的方法如下:
- 将类型提示文件放在包中。
-
如果只有一个模块 (例如
responses.py
),则应创建一个文件夹来保存它,并为类型提示文件 (responses.pyi
) 使用相同的名称和结构。
responses/
├── __init__.py
├── responses.py
└── responses.pyi
-
更新
setup.py
以包含包数据。 - 这可确保类型提示文件包含在的发行版中。
```python from setuptools import setup, find_packages
setup( name='responses', version='0.6.0', packages=find_packages(), package_data={'responses': ['*.pyi']}, # ... 其他设置 ... ) ```
- 构建分发包。
-
使用
sdist
或bdist_wheel
创建的分发包。
bash
python setup.py sdist bdist_wheel
- 安装并验证。
- 将的包安装到虚拟环境中并验证类型提示文件是否已安装。
bash
pip install dist/responses-0.6.0.tar.gz
检查
site-packages
目录中的安装,应该会看到
responses
文件夹,其中包含
responses.py
和
responses.pyi
。
通过这些步骤,类型提示文件将作为包的一部分进行分发,类型检查器和其他工具将能够在的库中使用它们。
标签:python,setuptools,python-typing From: 34571088