问题标签 [distutils]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2398 浏览

c++ - Python 非平凡的 C++ 扩展

我有相当大的 C++ 库和几个支持它的子库,我需要把整个东西变成一个 python 扩展。我使用 distutils 是因为它需要跨平台,但如果有更好的工具,我愿意接受建议。

有没有办法让 distutils 首先编译子库,然后在从主库创建扩展时链接它们?

0 投票
3 回答
281 浏览

python - 我想要一些关于将其包装为鸡蛋并将其上传到 pypi 的建议

我写了一些我想打包成鸡蛋的代码。这是我的目录结构:

我想把这个目录结构打包成一个鸡蛋,并包含测试文件。我应该在setup.py文件中包含什么,以便我可以拥有任意数量的命名空间和任意数量的测试?

这是我想分享的第一个开源代码。尽管可能只有我会觉得这个模块很有用,但我还是想把它上传到pypi. 我可以使用什么许可证来允许用户使用代码做他们想做的事情,对重新分发没有限制,修改?

尽管我打算更新这个 egg,但我不想对任何事情负责(例如为用户提供支持)。我知道这听起来可能很自私,但这是我的第一个开源代码,所以请多多包涵。我需要提供许可证的副本吗?我在哪里可以找到副本?

感谢您阅读所有这些内容。

0 投票
4 回答
13287 浏览

python - 如何使用简单的安装后脚本扩展 distutils?

安装模块和程序后,我需要运行一个简单的脚本。我很难找到有关如何执行此操作的直接文档。看起来我需要从 distutils.command.install 继承,覆盖一些方法并将这个对象添加到安装脚本中。虽然细节有点模糊,但对于这样一个简单的钩子来说似乎需要付出很多努力。有谁知道一个简单的方法来做到这一点?

0 投票
4 回答
44580 浏览

python - 在 Python 项目中管理资源

我有一个 Python 项目,其中使用了许多非代码文件。目前这些都是图像,但我将来可能会使用其他类型的文件。什么是存储和引用这些文件的好方案?

我考虑只是在主目录中创建一个文件夹“资源”,但是有一个问题;我的项目的子包中使用了一些图像。以这种方式存储这些图像会导致耦合,这是一个缺点。

此外,我需要一种访问这些文件的方法,该方法与我当前的目录无关。

0 投票
2 回答
1546 浏览

python - distutils setup.py 和 %post %postun

我是新手。我正在为自己的应用程序构建 rpm 包,并决定使用 distutils 来实现它。我通过使用该网站的建议设法创建了一些 %post 的替代品,我真的很感激,但我遇到了 %postun 的问题。让我描述一下我做了什么。在 setup.py 中,我运行创建运行应用程序所需的符号链接的命令。它工作得很好,但问题是当我想删除 rpm 时,链接仍然存在。所以我认为我应该在规范文件中使用 %postun 。我的问题是:有没有办法在 setup.py 中做到这一点,还是我必须手动编辑规范文件?请建议或指出一些手册或任何东西。谢谢

0 投票
3 回答
1757 浏览

python - 如何使用 distutils api 或 setuptools api 安装 distutils 包

我正在开发一个需要在远程服务器上安装 distutils 包的构建脚本。

在 PyPi 上,有 2 种方法可以完成此功能, collective.recipe.distutils 0.1 和 zerokspot.recipe.distutils 0.1.1

后面的模块是前者的派生,比第一个更方便一点,但两者都遇到同样的问题,我现在将描述这个问题。

当 bootstrap.py 执行时,它会下载 zc.buildout 包并将其放入 buildout 的 egg 目录中。这使 ./bin/buildout 可以访问 zc.buildout 代码,但 /usr/local/python 目前对 zc.buildout 一无所知。

Buildout 尝试通过在子进程中运行“python setup.py install”来安装包。这会产生 ImportError,因为没有为 /usr/local/python 安装 zc.buildout。

所以,我有几个解决方案。

  1. 在远程服务器上使用 easy_install 安装 zc.buildout。我根本不喜欢这个选项,它为一个非常微不足道的模块提供了一个特殊情况。

  2. 修改 zerokspot.recipe.distutils 以将 try 块放在“import zc.buildout”周围,这样即使没有安装 zc.buildout 也会安装。这是一个不错的解决方案,但有点骇人听闻。

  3. 将 subprocess 替换为将使用 distutils api 或 setuptools api 安装包的代码。在我看来,这将是最好的解决方案。

问题是我将如何做#3?

谢谢你,塔拉斯

PS:我通过创建另一个不依赖于 zc.buildout 的包解决了这个问题。我的包名为taras.recipe.distutils,它可以在 pypi 上找到。

0 投票
3 回答
2271 浏览

python - 如何使用 setuptools/distutils 触发后期构建

我正在使用 py2app/setuptools 构建一个应用程序,所以一旦它创建了应用程序包,我想对 dist 文件夹执行一些操作,例如创建一个安装程序/上传它。

有办法吗?我找到了一些安装后解决方案,但没有构建后

或者,我可以从我自己的脚本中调用“python setup.py py2app”并执行此操作,但如果可以在 setup.py 中完成会更好

0 投票
2 回答
2392 浏览

python - Python distutils - 带有过滤器的 copy_tree

我想将数据目录复制到我的分发目录中。copy_tree这样做就好了。但是,该项目也是一个 svn 存储库,我不希望发行版包含数据目录拥有的所有 .svn 文件。有什么简单的方法可以copy_tree排除.svn文件,还是我应该编写自己的递归目录副本?我觉得以前一定有人遇到过这个问题。

0 投票
2 回答
283 浏览

python - 打包 C/Python 项目时使用 distutils 的原因

我有一个包含 Python 和 C 代码的开源项目。我想知道 distutils 对我有什么用处,因为我打算做一个 ubuntu/debian 包。C 代码不是我可以或不想用作 Python 扩展的东西。C 和 Python 程序通过 localhost 与 TCP/IP 通信。

所以这里的底线是,当我学习打包时,distutils 特定文件的使用是否只会让我更加困惑,因为我不能将我的 C 代码用作 Python 扩展?或者我应该将我的 C 和 Python 功能划分为单独的项目以便能够更好地理解打包概念?

0 投票
5 回答
11423 浏览

python - 不要碰我的shebang

我讨厌distutils的一件事(我猜他是这样做的邪恶)是它改变了 shebang 线。换句话说,更理性和环境变量决定经文

神奇地转换成

这在 grok 中也可以看到:我在 virtualenv 中使用 grokproject 来启动我的项目,但现在我不能再移动开发目录了,因为它将绝对路径放在 shebang 指令中。

我问这个的原因是双重的

  • 我想移动它,因为我开始在一个目录(实验)中开发,现在我想将它移动到正确的路径,但我做不到。所以我创建了一个新的 virtualenv 和 grokproject 并复制了我的文件。这解决了这个问题,但让我对更合理的解决方案的好奇心得不到满足。特别是,如果对 virtualenv python 解释器的引用是相对的,那么问题一开始就不会出现。你知道virtualenv的布局,你可以很容易地参考virtualenv python。
  • 第二个原因是我希望能够将 virtualenv scp 到另一台计算机并在那里运行它而不会遇到麻烦。如果您有硬编码的路径,这是不可能的。