setup.py sdist 创建一个没有包的存档

setup.py sdist creates an archive without the package

我有一个名为 Alexandria 的项目,我想将其作为一个包上传到 PyPi。为此,我有一个名为 alexandria-python 的顶级文件夹,我将包和使用 setup.py 创建包存档所需的所有元素放入其中。文件夹 alexandria-python 具有以下结构:

|- setup.py
|- README.md
|- alexandria (root folder for the package)
  |- __init__.py
  |- many sub-packages

然后,按照许多创建可上传存档的教程,我打开一个终端,cd 到 alexandria-python,然后使用命令:

python setup.py sdist

这会创建额外的文件夹,因此 alexandria-python 的结构现在是:

|- setup.py
|- README.md
|- alexandria (root folder for the package)
  |- __init__.py
  |- many sub-packages
|- alexandria.egg-info
|- dist

一切看起来都很好,根据我的理解,包现在应该存档在 dist 文件夹中。但是当我打开 dist 文件夹并提取已创建的 alexandria-0.0.2.tar.gz 存档时,它不包含 'alexandria' 包。因此,其他一切似乎都在那里,除了最重要的元素:包装,​​如图所示:

接下来,当我将项目上传到 test-PyPi 然后 pip 安装它时,任何从工具箱导入模块的尝试都会导致 ModuleNotFoundError。为什么我的包裹没有上传到存档中?我是不是在做什么傻事?

注意:如果有帮助,这是我的 setup.py 文件的结构:

from setuptools import setup

# set up the package
setup(
    name = "alexandria",
    license = "Other/Proprietary License",
    version = "0.0.2",
    author = "Romain Legrand",
    author_email = "alexandria.toolbox@gmail.com",
    description = "a software for Bayesian time-series econometrics applications",
    python_requires = ">=3.6",
    keywords=["python", "Bayesian", "time-series", "econometrics"])

您的 setup.py 既没有 py_modules 也没有 packages。必须有其中之一。在你的情况下 alexandria 是一个包所以

setup(
…
    packages = ['alexandria'],
…
)

from setuptools import find_packages, setup

    packages = find_packages('.')