【问题标题】:Python setup.py: a lot of additional folders in projectPython setup.py:项目中有很多额外的文件夹
【发布时间】:2017-06-16 22:22:13
【问题描述】:

我在将自定义包导入项目时遇到了一些问题。 我创建了非常简单的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/

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

【问题讨论】:

    标签: python packaging distutils


    【解决方案1】:

    是的,这是意料之中的,因为您没有使用setup 参数package_dir 限制应该进入包的文件。没有那个 setup 将从它所在的目录中获取所有内容,其中包括它为存储必须进入可安装存档 (build) 的结构而创建的目录,以及最终 @ 的目标目录987654325@:dist)。

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

    【讨论】:

    • 好吧,在将packages=['custom_package'], 替换为package_dir={"": 'custom_package'} 之后,看起来它的工作原理是一样的。也创建了所有提到的文件夹。
    • distbuild 目录在哪里。他们应该custom_package之下。还要确保在每次运行 python setup.py sdist 时包含并更新您的版本号,否则您可能会安装旧的 .whl。如果最新包的版本号没有更新,pip 倾向于重复使用轮子。
    • @smart 我今天早上重读了您的帖子,并意识到您可能不是在说安装软件包时获取这些目录(在安装位置),而是将它们放在原始源目录中,因为运行python setup.py install。你能证实吗?我可以用两种方法来更新我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2018-06-01
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多