- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
使用 setup.py 打包 Python 包时,使用 setuptools:
from setuptools import setup
...
源代码分发创建者:
python setup.py sdist
不仅像往常一样包括在 MANIFEST.in 中指定的文件,而且还无偿地包括了 Subversion 在包目录下列为受版本控制的所有文件。这非常烦人。不仅难以对随我的包分发的文件进行任何形式的显式控制,而且这意味着当我按照“svn export”而不是“svn checkout”构建包时,我的内容包可能完全不同,因为没有 .svn 元数据设置工具会对包含的内容做出不同的选择。
我的问题:我如何才能关闭这种可怕的行为,以便“setuptools”以同样的方式对待我的项目,无论我使用的是 Subversion,还是从未听说过的版本控制,或者使用“svn export”创建的裸树"我在项目结束时创建的,以确保它在我的工作目录之外的某个地方干净地构建?
到目前为止,我所管理的最好的是一个丑陋的猴子补丁:
from setuptools.command import sdist
del sdist.finders[:]
但这是 Python,而不是丛林,所以我当然想要一个完全不涉及猴子的更好的解决方案。我怎样才能驯服 setuptools,关闭它的魔力,并通过查看 MANIFEST.py 中可见的、可预测的规则来让它表现得明智?
最佳答案
Brandon,我知道您对此了解很多,但为了他人的利益,我会尽量给出完整的答案(尽管我不是 setuptools 专家)。
这里的问题是 setuptools 本身涉及很多黑魔法,包括使用一个名为 setuptools.file_finders 的入口点,您可以在其中添加插件以查找要包含的文件。但是,我完全不知道如何从中删除插件...
快速解决方法:svn 将你的包导出到一个临时目录并从那里运行 setup.py。这意味着你没有 svn,所以 svn finder 找不到要包含的文件。 :)
更长的解决方法:您真的需要安装工具吗? Setuptools 有很多特性,所以答案可能是肯定的,但主要是这些特性是依赖项(因此您的依赖项由 easy_install 安装)、命名空间包 (foo.bar) 和入口点。命名空间包实际上也可以在没有 setuptools 的情况下创建。但是如果你不使用这些,你实际上可能只使用 distutils。
丑陋的解决方法:您在问题中提供给 sdist 的猴子补丁,这只会使插件没有任何查找器,并快速退出。
如您所见,这个答案虽然尽我所能完成,但仍然令人尴尬地不完整。我实际上无法回答您的问题,尽管我认为答案是“您不能”。
关于python - 如何让 setuptools 忽略颠覆 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1129180/
我目前正在使用 centos 网络管理。我尝试将默认的 python 版本从 2 更改为 3。我已经完成了,您可以从下面的结果中看到: [root@srv ~]# which python /usr/
我无法在 ubuntu 中使用命令行安装 setuptools。我使用了“pip install setuptools”,但它显示错误: Exception: Traceback (most rece
我正在一台新的 Mac 上进行设置,我一直在嗡嗡作响,安装了 pip 和一些软件包。突然间,我尝试运行的每个 pip 命令都会抛出 Exception: Traceback (most recent
我赢了10场。运行时:。我遇到了这个错误:。似乎什么都没有帮助。我试着卸载蟒蛇,得到了一个成功的消息,但似乎有一些旧版本的痕迹仍然存在。我怎样才能完全抹去蟒蛇安装的所有痕迹?
安装时出现此错误。这会导致问题吗? 错误:tensorboard 2.0.2 要求 setuptools>=41.0.0,但您将拥有不兼容的 setuptools 40.6.2。 最佳答案 我刚刚做了
我的 pacakge 有 *.py 文件和 *.c 文件,*.py 文件使用 ctypes 导入共享库 从 c 源构建。 现在我遇到了如何编写 setup.py 的问题。 setup脚本需要将my_c
python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(
我刚刚更新了一个包以使用 setuptools_scm,并发现 readthedocs 中的版本号错误。 http://sshuttle.readthedocs.org/en/v0.77/显示: Ve
我的项目有下面的包树 └── src | ├── mypkg1 | │ ├── module1.py | │ ├── module2.py | │ └── __in
我的项目有下面的包树 └── src | ├── mypkg1 | │ ├── module1.py | │ ├── module2.py | │ └── __in
我的 Python 模块包含一个外部脚本,用户可以从命令行执行该脚本。我希望用户能够一次性安装 Python 模块和脚本。使用setuptools,我尝试添加: scripts=['bin/mybin
我对 python 中的设置工具还不太熟悉。我最近向我的项目添加了一个依赖项并遇到了依赖项的问题。问题是: try: from setuptools import setup except I
假设我有一个 setuptools 项目依赖于 PyPi 包 A,1.0 版。 PyPi 包 B,1.0 版。 包 B 依赖于 A,v. 2.0。 在 Java 中,我必须排除 pom.xml 或类似
我有一个 Python 脚本,有几个外部依赖项,我想分发给同事。但是,我们需要定期修改此脚本,所以我不想安装本身(即复制到 site-packages)。据我所知,setuptools 似乎隐含地执行
我正在为一个 python 项目设置一个持续交付系统,我正在尝试弄清楚如何通过 egg_info 设置项目构建的整个版本字符串。 我正在使用 thoughtworks GO,它有一个名为 GO_PIP
我在 setup.py 中有以下内容: from setuptools import setup # ... setup( name='xml-boiler', version='0.
当我运行我的应用程序时,我的应用程序引擎日志给我这个错误: WARNING 2012-03-01 23:27:31,089 py_zipimport.py:139] Can't open zipfi
我正在使用 setuptools 打包一个 python 应用程序,通常运行 python setup.py install 并将所有内容打包到一个 egg 中并安装它。 问题是我希望将它安装为可编辑
我无法卸载设置工具。怎么会? $ sudo pip uninstall setuptools Can't uninstall 'setuptools'. No files were found to
我想支持一个界面,新开发人员只需运行 python setup.py test 即可运行我的所有测试。我认为这是合理的。 鉴于我在我的包中定义了几个“额外”(optional features wit
我是一名优秀的程序员,十分优秀!