Python setup.py:项目中有很多额外的文件夹

Python setup.py:项目中有很多额外的文件夹,python,packaging,distutils,Python,Packaging,Distutils,我在将自定义包导入project时遇到了一些问题。 我创建了非常简单的setup.py文件。 它看起来像: from setuptools import setup import custom_package setup( name='custom_package', version=custom_package.__version__, packages=['custom_package'], ) 然后我将其安装到我的系统中: python setup.py in

我在将自定义包导入project时遇到了一些问题。 我创建了非常简单的
setup.py
文件。 它看起来像:

from setuptools import setup

import custom_package

setup(
    name='custom_package',
    version=custom_package.__version__,
    packages=['custom_package'],
)
然后我将其安装到我的系统中:

python setup.py install
custom_package
可用,但在执行此命令后,我的项目中还有许多其他文件夹:

build/
dist/
custom_package.egg-info/

这是预期的还是我应该以某种方式避免它们?

这是预期的,因为您没有使用
设置
参数
package\u dir
来限制应该进入包中的文件。如果没有这个功能,
安装程序
将从它所在的目录中获取所有内容,其中包括它用来存储必须进入可安装存档的结构的目录(
构建
),以及最终的
.tar.gz
dist
)的目标目录


这就是为什么许多包布局习惯使用src子目录来存储所有源代码的原因之一。您可以添加一个列表,列出所有必须作为列表进入的
.py
文件,或者使用一些帮助函数来生成该列表(如果您已经在一个“干净”的目录下拥有了所有内容,这会更容易些)。

好吧,在替换
packages=['custom\u package']之后,
package\u dir={”“:'custom\u package'}
它的工作原理似乎是一样的。所有提到的文件夹也都被创建了。
dist
build
目录在哪里。它们不应该在
custom_package
下。另外,请确保在每次运行
python setup.py sdist
时都包含并更新版本号,否则您可能正在安装如果没有更新最新软件包的版本号,旧的
.whl
pip
会有重复使用轮子的倾向。@smart我今天早上重新阅读了你的帖子,意识到你可能没有提到在安装软件包时获取这些目录(在安装位置)但是,由于运行了
python setup.py install
,所以无法将它们放在原始源代码目录中。您能否确认这一点?我可以用两种方法更新我的问题,说明如何做到这一点。