假设我有一个非常简单的包,其结构如下:
.
├── 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
文件放在主包中时,一切正常。在
如果您能给我一些建议,我将不胜感激:
pathlib
部分似乎也冒犯了我的distutils
.PyCharmX.X/config/python-skeletons
,但没用有些方法可行,但不能解决问题:
因此,问题是:如何使用Python存根创建一个最小的、可分发的包,这将被现有工具识别。根据实验,我怀疑有两个问题:
shared/typehints/pythonX.Y
中的包应该创建的结构-如果这是真的,我应该如何定义data_files
?在
问题是您没有在存根发行版中包含
foo/__init__.pyi
文件。即使它是空的,它使foo
成为一个存根文件包,并启用对foo.bar
的搜索。在您可以修改
data_files
中的data_files
,以将两者都包含进来相关问题 更多 >
编程相关推荐