问题标签 [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.
python - 如何使用 Python distutils?
我在 python 中编写了一个快速程序来将 gtk GUI 添加到 cli 程序。我想知道如何使用 distutils 创建安装程序。因为它只是一个命令行应用程序的 GUI 前端,所以它只能在 *nix 中运行,所以我不担心它是跨平台的。
我的主要目标是为 debian/ubuntu 用户创建一个 .deb 包,但我不了解 make/configure 文件。到目前为止,我主要是一名网络开发人员。
编辑:有谁知道一个使用 distutils 的项目,所以我可以看到它在运行,你知道,实际上尝试构建它?
这里有一些有用的链接
-
本指南非常有帮助。我不知道在最初的 gooling 浪潮中我是怎么错过的。它甚至会引导您打包现有的 python 应用程序
-
这是 ubuntu 的官方包维护项目。任何人都可以加入,并且有很多关于创建各种类型的包的教程和信息,其中包括上面的“python 打包指南”。
“Python distutils 到 deb?” - Ars Technica 论坛讨论
根据这个对话,你不能只使用 distutils。它不遵循 debian 打包格式(或类似的格式)。我想这就是你需要 dh_make 的原因,如 Ubuntu Packaging guide 中所示
-
这个有一些有趣的讨论(这也是我找到 ubuntu 指南的方式)关于连接 zip 文件和 shell 脚本以创建某种通用可执行文件(任何带有 python 和 bash 的东西)。奇怪的。让我知道是否有人找到有关此做法的更多信息,因为我从未听说过。
python - 在 Python 模块分发中查找文件
我编写了一个 Python 包,其中包含一个 bsddb 数据库,其中包含一个用于更耗时的计算的预计算值。为简单起见,我的安装脚本将数据库文件安装在与访问数据库的代码相同的目录中(在 Unix 上,类似于 /usr/lib/python2.5/site-packages/mypackage/)。
如何存储数据库文件的最终位置以便我的代码可以访问它?现在,我正在使用基于__file__
访问数据库的模块中的变量的 hack:
它有效,但似乎...... hackish。有一个更好的方法吗?我想让安装脚本从 distutils 模块中获取最终安装位置,并将其填充到“dbconfig.py”文件中,该文件与访问数据库的代码一起安装。
python - distutils 可以创建空的 __init__.py 文件吗?
如果我所有的__init__.py
文件都是空的,我是否必须将它们存储到版本控制中,或者有没有办法在安装过程中distutils
创建空__init__.py
文件?
python - 如何将安装后脚本添加到 easy_install / setuptools / distutils?
我希望能够在我的 setup.py 中添加一个钩子,它将在安装后运行(在 easy_install'ing 或 python setup.py 安装时)。
在我的项目PySmell中,我有一些 Vim 和 Emacs 的支持文件。当用户以通常的方式安装 PySmell 时,这些文件会被复制到实际的 egg 中,用户必须将它们取出并将它们放在他的 .vim 或 .emacs 目录中。我想要的是在安装后询问用户,他希望将这些文件复制到哪里,或者甚至只是一条消息,打印文件的位置以及他应该如何处理它们。
做这个的最好方式是什么?
谢谢
我的 setup.py 看起来像这样:
编辑:
这是一个演示的存根python setup.py install
:
easy_install 路线还没有运气。
python - Python Distutils
由于Distutils的严格版本编号类,我无法安装cython。例如 binutils-2.18.50-20080109-2.tar.gz 不能与MinGW一起用于安装 cython。源代码文档说“这个版本编号系统的基本原理将在 distutils 文档中解释。” 我找不到理由。
我的问题:这个版本编号系统的基本原理是什么?
python - 如何使用 distutils 安装 Python 扩展模块?
我正在开发一个名为“lehmer”的 Python 包,其中包括一堆用 C 编写的扩展模块。目前,我有一个扩展模块“rng”。我正在使用 Python 的 Distutils 来构建和安装模块。我可以编译和安装模块,但是当我尝试使用import lehmer.rng
or导入模块时from lehmer import rng
,Python 解释器会抛出ImportError
异常。我可以很好地导入“lehmer”。
这是我的setup.py
文件的内容:
当我列出 Pythonsite-packages
目录的内容时,我看到以下内容:
我的PYTHONPATH
环境变量设置正确,所以这不是问题(如前所述,我可以import lehmer
很好,所以我知道这PYTHONPATH
不是问题)。Python 使用以下搜索路径(由 报告sys.path
):
更新
在 OpenSUSE 10 机器上使用时它可以工作,但在 Mac OS X 上测试时仍然无法加载 C 扩展。以下是 Python 解释器的结果:
python - 打包 Python 库
我有一些 Munin 插件,它们报告来自 Autonomy 数据库的统计信息。他们都使用一个小型库来抓取相关数字的 XML 状态输出。
我正在尝试将库和插件捆绑到可安装 Puppet 的 RPM 中。实际的 RPM 构建应该是直截了当的;一旦我有了distutils
-produced 的 distfile,我就可以根据从 Dag 或 EPEL repos [1] 中提取的 .spec 文件将其制作成 RPM。这是distutils
我不确定的一点——事实上,我什至不确定我的库是否为打包而正确编写。以下是它的工作原理:
偶像7stats.py:
插件代码:
我想我希望idol7stats.py 以/usr/lib/python2.4/site-packages/idol7stats
或Python 搜索路径中的其他内容结束。我需要什么distutils
魔法?这:
几乎可以工作,除了代码进入/usr/lib/python2.4/site-packages/idol7stats.py
,而不是子目录。我希望这是因为我不了解 Python 中的模块/包/其他容器之间的区别。
那么,有什么问题呢?
[1] 是的,我可以在/usr/lib/python2.4/site-packages
使用 RPM 时使用库,但我想知道如何打包 Python 代码。
python - Python 守护进程打包最佳实践
我有一个我用 python 编写的工具,通常应该作为守护进程运行。打包此工具以进行分发的最佳实践是什么,特别是应如何处理设置文件和守护程序可执行文件/脚本?
相关地,是否有任何通用工具用于设置适合给定平台的启动时运行的守护程序(即Linux 上的初始化脚本、Windows 上的服务、OS X 上的启动)?
python - 我可以使用 VS2005 为使用 VS2003 构建的 Python 系统构建扩展吗
RDFLib需要编译 C 扩展才能安装在 ActiveState Python 2.5 上;据我所知,网络上没有明显的二进制安装程序。在尝试使用 安装时python setup.py install
,它会产生以下消息:
error: Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.
网上有各种关于为讨论使用 MinGW 的 distutils 配置编译器的 资源,尽管我还没有让它工作。作为替代方案,我有 VS2005。
谁能明确地告诉我您是否可以使用 VS2005 中的 C 编译器为 VS2003 编译的 Python(在本例中为 ActiveState Python 2.5)构建 Python 扩展模块。如果可以,需要什么配置?
python - 如何使用 SVN 和 distutils 为 Python 包分配版本号?
我正在编写一个 Python 包。包需要在内部知道它的版本号,同时还要在setup.py
脚本中包含这个版本distutils
。
这样做的最佳方法是什么,以便不需要在两个不同的地方维护版本号?我不想setup.py
从我的库的其余部分导入脚本(这看起来很傻),我不想从setup.py
脚本中导入我的库(同样)。理想情况下,我只需设置一个关键字svn
并自动将其替换到文件中,但这似乎在svn
. 我可以在两个地方读取一个包含版本号的通用文本文件——这是最好的解决方案吗?
澄清一下:我想在一个地方维护版本号。是的,我可以在包中放一个变量,然后再在setup.py
文件中放一个变量。但随后它们不可避免地会不同步。