Python 如果安装文件为';你没有把setup.py命名吗?

Python 如果安装文件为';你没有把setup.py命名吗?,python,package,setuptools,setup.py,Python,Package,Setuptools,Setup.py,当我想将一个自行编写的包拆分为两个包时,我遇到了这个问题。我添加了另一个setup.py,并给这两个新名称以保持它们之间的区别。但是,在这一点上安装软件包是不起作用的 一个简单的例子: src +--test_package | +--__init__.py +--setup_package.py 其中\uuuu init\uuuuu.py为空,并且setup\u package.py包含基本设置代码 from setuptools import setup setup(name='pa

当我想将一个自行编写的包拆分为两个包时,我遇到了这个问题。我添加了另一个
setup.py
,并给这两个新名称以保持它们之间的区别。但是,在这一点上安装软件包是不起作用的

一个简单的例子:

src
+--test_package
|   +--__init__.py
+--setup_package.py
其中
\uuuu init\uuuuu.py
为空,并且
setup\u package.py
包含基本设置代码

from setuptools import setup

setup(name='package',
      version='0.1',
      packages=['package',],
      )
我使用
python setup-package.py sdist--formats=zip
创建一个包,并尝试使用
pip install./dist/package-0.1.zip安装。此操作失败,因为它找不到
setup.py
。如果我将
setup package.py
重命名为
setup.py
,然后重新生成包,我就可以顺利安装
SOURCES.txt
未根据需要列出
setup.py

我还尝试了其他一些方法: 为安装重命名
setup package.py
,而不重建也会产生错误。 添加一个空的
setup.py
并使用
setup package.py
也不起作用

我是包装方面的新手,但我没有看到任何警告,说明
setup.py
是绝对必需的,必须有特定的名称。查看这篇文章,我也找不到任何类似的警告,尽管我还没有深入研究。但是,在同一目录中有两个包并希望同时构建它们似乎不是一种极端的用法,在这种情况下,您希望有两个
setup.py
文件。这显然是不可能的,所以你需要给他们起不同的名字,但那样就行不通了


为什么会发生这种情况?解决这个问题并不太困难,但对我来说相当困惑,我想知道为什么会发生这种情况(以及您打算如何做)。

pip(和其他工具)希望有一个文件
setup.py
(或者
pyproject.toml
,但这是另一个故事),所以情况就是这样。您可能可以通过只构建和分发控制盘而不是源分发(sdist)来解决这个问题。否则,您可能会编写一个
setup.py
,其中包含一个额外的参数,以便它可以构建这两个项目(我想这个问题以前已经被问过了)。如果有,那么我没有看到它。解决这个问题并不是一个特别的问题,只需将它们放在单独的文件夹中就行了,手动重命名也行(当您不需要经常重建它时)。首先,我更感兴趣的是为什么会发生这种情况。当构建源发行版(
sdist
)时,将
setup.py
文件的副本放在存档(发行版)中。例如,当pip尝试安装时,它会解压缩归档文件并“执行”
setup.py
(比这稍微复杂一点,但并不重要)。如果没有
setup.py
,则pip无法构建发行版,也无法安装它。