问题标签 [setuptools]

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 投票
5 回答
77775 浏览

python - 如何在 virtualenv 上安装旧版本的 Django?

这听起来像是一个愚蠢的问题,因为它的真正目的virtualenv就是:在虚拟环境中安装某个特定版本的包(在本例中为 Django)。但这正是我想做的,我想不通。

我在 Windows XP 上,并且成功创建了虚拟环境,并且能够运行它,但是我应该如何将我想要的 Django 版本安装到其中呢?我的意思是,我知道要使用新创建的easy_install脚本,但是如何让它安装 Django 1.0.7?如果我这样做easy_install django,它将安装最新版本。我尝试1.0.7以各种方式将版本号放入此命令,但没有任何效果。

我该怎么做呢?

0 投票
9 回答
234545 浏览

python - 为什么使用 pip 而不是 easy_install?

一条推文写道:

不要使用easy_install,除非你喜欢刺伤自己的脸。使用点子。

为什么使用 pip 而不是 easy_install?主要不是PyPI 和包作者的错吗?如果作者将垃圾源 tarball(例如:缺少文件,没有 setup.py)上传到 PyPI,那么 pip 和 easy_install 都会失败。除了外观上的差异,为什么 Python 人(如上面的推文)似乎更喜欢pip 而不是 easy_install?

(假设我们谈论的是来自社区维护的 Distribute 包中的 easy_install)

0 投票
1 回答
1153 浏览

python - 如何在不重新启动应用程序的情况下轻松安装 egg 插件并加载它?

我正在创建一个下载并安装自己的 egg 插件的应用程序,但是在 easy_install 将其解压缩到位后加载 egg 时出现问题。这就是它现在的工作方式:

  • 应用程序将鸡蛋下载到临时文件夹中
  • 使用 setuptools.command.easy_install.main() 将 egg 安装到 ~/.app/plugins 文件夹(由 dist-packages 上的 pth 指向)
  • 此时,~/.apps/plugins/easy-install.pth 更新为新的 egg 路径

问题是 pth 直到 python 进程重新启动才重新加载,这意味着必须停止并重新启动应用程序(应用程序是一个长时间运行的进程,并且插件安装必须不需要重新启动)。

所以问题是如何以编程方式重新加载pth,以便插件入口点发现适用于新的egg,或者以某种方式让easy_install返回它安装egg的路径,所以我可以手动(使用pkg_resources)加载新插件?

我可以创建一个函数来尝试猜测 easy_install 的路径或自己解析 pth,但如果可能的话,我宁愿不这样做。

Python 2.6,安装工具 0.6c9


感谢Marius Gedminas,我现在所做的基本上是:

0 投票
1 回答
425 浏览

python - 编写 setup.py 文件时如何包含修改后的 3rd 方模块?

我写了一个独立的脚本,依赖于几个修改过的模块。目录结构如下所示:

目前,如果我只是将脚本符号链接usup到我的~/bin目录,我可以直接调用脚本并且它可以正常工作(一切都正确导入没有问题)。

现在我想制作一个 setup.py 脚本,以便分发它。我不知道该怎么做。这是我现在拥有的:

问题是我不能只import mutagen在 tsup 脚本中做,因为它现在是tsclient.mutagen. 如果我将导入更改为说from tsclient import mutagen我收到此错误(来自诱变剂的__init__.py文件):

我认为最好的解决方案不是通过诱变剂并更改“诱变剂”的每个实例并将其更改为“tsclient.mutagen”。这是我唯一的选择吗?

0 投票
1 回答
866 浏览

python - 如何使用简单的预卸载脚本扩展 distutils?

我发现Question#1321270用于安装后。我目前的主要目标是 bdist_wininst,但我没有找到与卸载相关的任何内容......

澄清一下:
我想在安装后注册一个 com 服务器并在卸载前取消注册它。

扩展答案:
ars 的答案似乎是正确的,但是,为了事情的完整性(我认为文档为这个主题留下了一些改进空间......):
我没有像提到Question#1321270 extended所建议的那样distutils.command.install,但写一个新的 python 脚本调用scripts/install.py并在 setup.py 中设置以下内容:

install.py 肯定会在安装时被调用。看来,尽管它(尽管文档说)在卸载时没有被调用...

0 投票
1 回答
2910 浏览

python - 在哪里手动安装python文件

我在一个较大的项目中遇到了 setuptools 的问题,其中一个 python 包必须从几个 debian 包(每个包都包含一个“主”包的子包)“构建”。因此,我们决定手动安装文件而不是使用“setup.py install”,但我们不确定要使用的位置。我们首先使用了 /usr/share 中的一个目录,该目录已经用于我们安装的其他内容。这很好用,除了我们必须在启动任何应用程序之前弄乱 PYTHONPATH 之外。

在默认的 sys.path 中是否有我们可以安装软件包的地方?我在考虑 /usr/lib/python2.6/dist-packages (当你使用 setuptools 时文件应该结束的地方,不应该吗?),但我有点不愿意写信到这样的地方这与自定义安装脚本......另外,如果 Ubuntu 切换到 2.7,我们是否也必须移动?任何“最佳实践”如何做这样的事情?整个站点包/dist-packages 概念的文档记录不足:(

0 投票
1 回答
941 浏览

python - python 命令行应用程序的最佳布局是什么?

什么是正确的方法(或者我会选择一个方法)来布置一个中等复杂性的命令行 python 应用程序?我用 paster 创建了一个 python 项目骨架,它给了我一些文件开始:

我想知道,主要是我的程序入口点应该去哪里,我怎样才能把它安装在路径上?setuptools 会为我创建它吗?我试图在 HHGTP 中找到它,但也许我只是想念它。

0 投票
4 回答
82174 浏览

python - 如何让 setuptools 安装不在 PyPI 上的包?

我刚刚开始使用 setuptools 和 virtualenv。我的包需要最新的 python-gearman,只能从 GitHub 获得。PyPI 上的 python-gearman 版本是旧版本。Github 源码是 setuptools 兼容的,即有 setup.py 等。有没有办法让 setuptools 下载并安装新版本,而不是在 PyPI 上查找并安装旧版本?

仅供参考,新的 python-gearman 是http://github.com/mtai/python-gearman

0 投票
2 回答
723 浏览

python - 更改 Python 的 setuptools gcc buildpath

我正在尝试在没有 root 权限的服务器上安装 MySQLdb-python。它没有适当的 mysql 开发文件,这些文件python setup.py build通常会编译成 _mysql.so。我已经获得了这些文件,并将它们放在我的主目录中,但是我无法让构建脚本找到它们。

当我运行构建命令时,脚本会吐出一个巨大的 gcc 行:

-I/usr/include/mysql 是问题所在。我需要将其更改为 -I/home/user/mysql。我曾尝试自己手动运行 gcc 行,但我对 gcc 或 c 一般一无所知。

是否有任何 python-y 方法来更改包含目录?

0 投票
1 回答
663 浏览

python - python setuptool 如何为 libxml2-dev 和 libxslt1-dev 添加依赖项?

我的应用程序需要 lxml >= 2.1,但是要安装 lxml,它需要安装 libxml2-dev libxslt1-dev 否则它会在安装 lxml 时引发错误,

有没有一种方法可以使用 python 设置工具在我的 setup.py 中将其作为依赖项......