假设我有一个非常简单的包,其结构如下:.
├── foo
│ ├── bar
│ │ └── __init__.py
│ └── __init__.py
└── setup.py
文件内容:setup.py:from distutils.core import setup
setup(
name='foobar',
version='',
packages=['foo', 'foo.bar'],
url='',
license='Apache License 2.0',
author='foobar',
author_email='',
description=''
)
foo/bar/__init__.py:def foobar(x):
return x
其余文件为空。
我使用pip安装包:cd foobar
pip install .
并确认安装正确。在
现在我想用存根文件创建一个单独的包:.
├── foo
│ ├── bar
│ │ └── __init__.pyi
│ └── __init__.pyi
└── setup.py
文件内容:setup.py:from distutils.core import setup
import sys
import pathlib
setup(
name='foobar_annot',
version='',
packages=['foo', 'foo.bar'],
url='',
license='Apache License 2.0',
author='foobar',
author_email='',
description='',
data_files=[
(
'shared/typehints/python{}.{}/foo/bar'.format(*sys.version_info[:2]),
["foo/bar/__init__.pyi"]
),
],
)
foo.bar.__init__.pyi:def foobar(x: int) -> int: ...
{看不出这个包是什么意思,但我无法识别它。当我把pyi文件放在主包中时,一切正常。在
如果您能给我一些建议,我将不胜感激:我一直试图从PEP 484 - Storing and distributing stub files中理解一些道理,但没有用。即使是pathlib部分似乎也冒犯了我的distutils
我试着把存根放进.PyCharmX.X/config/python-skeletons,但没用
有些方法可行,但不能解决问题:将存根文件放入当前项目并标记为源文件。在
在某些情况下,将存根路径添加到包中(至少在某些情况下)。在
因此,问题是:如何使用Python存根创建一个最小的、可分发的包,这将被现有工具识别。根据实验,我怀疑有两个问题:我误解了shared/typehints/pythonX.Y中的包应该创建的结构-如果这是真的,我应该如何定义data_files?在
PyCharm根本不考虑这些文件(这似乎与链接问题中的一些评论相矛盾)。在
它应该可以正常工作,但我犯了一些配置错误,并寻找不存在的外部问题。在
有没有既定的程序来解决这样的问题?在