问题标签 [distribute]

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 回答
1082 浏览

python - 分发/distutils 指定 Python 版本

有点跟进这个...... :)

我的项目仅限 Python 3,我的问题基本上是我如何告诉 distutils/distribute/whoever 这个包仅限 Python 3?

0 投票
0 回答
143 浏览

osx-mountain-lion - 用于 Python 3.2 的分布式和 Pip

当使用 pip 安装模块或为 python3 分发 easy_install 时,模块将改为为 python 2.7 或更早版本安装。我对 mac 操作系统和 python 本身都很陌生(4 个月左右)。我想安装并为 python 3.2 工作的分发和 pip。

使用 easy_install 或 pip 时,安装 python 2.7 时一切正常。然而,这不是我想要的,我尝试通过安装 pip 和 easy install 来解决这个问题:

须藤卷曲https://raw.github.com/pypa/pip/master/contrib/get-pip.py | 蟒蛇3

须藤卷曲https://raw.github.com/pypa/pip/master/contrib/get-pip.py | Python

这应该可以完成我想做的事情,但是,在我这样安装之后:

new-host-6:~ Eric$ pip install spynner

-bash: pip: 找不到命令

如果有人在获取 pip 并分发 easy_install 以适用于 python3 方面有上述任何经验,我们将不胜感激。

0 投票
0 回答
673 浏览

tree - 在 mpi 中使用二叉树传播信息

我正在学校学习 MPI,并且在完成了一项大型作业(我完成了 :))之后,我有一个额外的问题是这样的:“假设我们有一个二叉树拓扑,我们想要分发一些只有根处理器(处理器0)有。左右儿子的数量是多少>你如何使用二叉树分配它?这个算法的复杂度是多少?现在,我知道复杂度是 log(N),因为它是一棵二叉树,每个处理器从它的父亲那里接收数据,然后传递给它的 2 个儿子,所以它是 log(N)。但我真的无法命名其他处理器以及如何分配数据(因为我必须首先找到正确命名拓扑的方法)。我认为它可能是这样的:

但显然这不是这样做的方法。有人有什么想法吗?

0 投票
1 回答
712 浏览

django - 修复 virtualenvwrapper 现在 setuptools 在 pip install 上失败

我刚刚通过使用此页面作为指南修复 virtualenvwrapper:

http://www.jongales.com/blog/2012/07/25/fixing-virtualenv-after-installing-mountain-lion/#comment-37964

现在当我pip install -r requirements.txt让我的 Django 项目工作时,我在 setuptools 的东西上失败了?

有人有什么建议吗?

0 投票
7 回答
84717 浏览

python - “错误:无法识别选项--single-version-externally-managed”表示什么?

error: option --single-version-externally-managed not recognized在使用pip install各种包(包括PyObjCand astropy)时,我似乎突然开始遇到错误。

我以前从未见过这个错误,但它现在也出现在 travis-ci 构建中,但没有任何改变。

此错误是否表示分发过时?

中的一些错误指定的选项setup.py

完全不同的东西?

0 投票
1 回答
472 浏览

python - Python 发行版的用例是什么?

我正在为我正在编写的 Python 包开发一个发行版,以便可以将其发布在 PyPI 上。这是我第一次使用 distutils、setuptools、distribute、pip、setup.py 和所有这些,我正在努力学习曲线,它比我预期的要陡峭一些 :)

通过在 setup.py的参数中指定它们来将我的一些测试数据文件包含在 tarball 中时,我遇到了一些麻烦,data_files直到我在这里遇到另一篇将我指向该MANIFEST.in文件的帖子。就在那时,我突然想到,您在 tarball/zip 中包含的内容(使用 MANIFEST.in)以及在用户执行 easy_install 或其他任何操作时安装在用户的 Python 环境中的内容(基于您在 中指定的内容setup.py)是两个非常不同的东西; 一般来说,tarball 中的内容比实际安装的要多得多。

这立即引发了我的代码异味,并意识到发行版必须有多个用例;我一直专注于我真正参与的唯一一个,使用 easy_install 或 pip 安装库。然后我意识到我正在开发工作产品,而我对我正在开发的最终用户只有部分了解。

所以我的问题是:“除了将 Python 发行版安装在自己的 Python 环境中之外,还有哪些用例?我还为谁服务于这个发行版,他们最关心什么?”

以下是一些我尚未弄清楚的与答案有关的工作问题:

  • 在源代码分发中包含源代码控制 (git) 下的所有内容是否明智?在 github 时代,有没有人下载源代码分发来访问完整的项目源代码?或者我应该只发布一个指向我的 github 存储库的链接?不会包含所有内容会使发行版膨胀并使只想安装它的人花费更长的时间下载吗?

  • 我将在 readthedocs.org 上托管文档。在源代码分发中包含 HTML 版本的文档对我来说有意义吗?

  • 有没有人用来python setup.py test在源代码发行版上运行测试?如果是这样,他们扮演什么角色,他们处于什么情况?我不知道我是否应该费心去做这项工作,如果我这样做,该为谁工作。

0 投票
1 回答
229 浏览

python - 如何在新的 Python 版本中使用 pip?

我将 python2.6 作为我的默认 python,并且我一直在使用分发 easy_install 在~/.local. easy_install 有很多问题,我想切换到 pip,同时从 python2.6 升级到 python2.7。我现有的 pip 版本与 python2.6 相关联,并且总是在~/.local/lib/python2.6寻找包。这意味着我必须使用 Python2.7 再次安装 pip,但使用现有的 python2.6 pip 似乎无法做到这一点,对吧?

因此我尝试下载 pip 并像这样安装它:

请注意,我没有root,所以我必须在本地安装pip。当我尝试这个时,我得到:

我该如何解决这种情况?我显然不能用 pip 安装 setuptools,因为我不能安装 pip ......我要做的就是将 pip 与 python2.7 链接,升级 pip 然后用 pip 安装所有东西,忘记easy_install和旧的python2.6及其包。

当我尝试下面的答案时,我得到:

我必须手动创建(使用mkdir)目录:

这似乎坏了......一旦我这样做了,它就起作用了,但为什么它需要手动创建目录?

谢谢。

0 投票
1 回答
69 浏览

python - 使 Python 包与 virtualenv 兼容

setup.py使用distutils 的通常设置(包含scripts要执行的脚本的设置)编写的 Python 包如何与virtualenv和兼容pip?在以与虚拟环境兼容的方式编写包时,是否有注意事项指南或注意事项?或者是否有任何 setuptools 包保证可以使用virtualenv?谢谢。

0 投票
2 回答
10289 浏览

python - 如何轻松分发具有 Python 模块依赖项的 Python 软件?在 Unix 上安装 Python 包的挫折

我的目标是分发一个 Python 包,其中包含其他几个广泛使用的 Python 包作为依赖项。我的包依赖于编写良好的、带有 Pypi 索引的包,如 pandas、scipy 和 numpy,并在 setup.py 中指定需要某些版本或更高版本,例如“numpy >= 1.5”。

我发现对于不是Python 打包专家(即使他们知道如何编写 Python)的精通 Unix 的用户来说,安装像我这样的包是非常令人沮丧和几乎不可能的,即使在使用应该易于使用的包管理器时也是如此. 我想知道是否有人可以提供这个痛苦过程的替代方案,或者我的经验是否只是反映了 Python 打包和分发当前非常困难的状态。

假设用户将您的软件包下载到他们的系统上。大多数人会尝试“天真地”安装它,使用类似的东西:

因为如果你在谷歌上搜索安装 Python 包的说明,通常会出现这种情况。对于绝大多数用户来说,这将失败,因为大多数用户在他们的 Unix/Linux 服务器上没有 root 访问权限。通过更多搜索,他们会发现“--prefix”选项并尝试:

--prefix由于用户不了解 Python 打包的复杂性,他们会选择任意目录作为"~/software/mypackage/". 它不会是所有其他 Python 包所在的干净策划的目录,因为同样,大多数用户并不知道这些细节。如果他们安装另一个包“myotherpackage”,他们可能会通过它"~/software/myotherpackage",你可以想象这将如何导致令人沮丧的黑客攻击PYTHONPATH和其他并发症。

继续安装过程,一旦用户尝试使用该包,调用"setup.py install"with"--prefix"也将失败,即使它似乎已正确安装,因为可能缺少其中一个依赖项(例如 pandas、scipy 或 numpy)和一个包不使用管理器。他们将尝试单独安装这些软件包。即使成功,PYTHONPATH由于给定的非标准目录,包将不可避免地不在"--prefix",耐心的用户将涉足其修改PYTHONPATH以使依赖项可见。

在这个阶段,精通 Python 的朋友可能会告诉用户,他们应该使用包管理器"easy_install"(主流管理器)来安装软件并处理依赖关系。安装后"easy_install",这可能很困难,他们会尝试:

这也会失败,因为用户通常没有权限在生产 Unix 服务器上全局安装软件。通过更多阅读,他们将了解该"--user"选项,并尝试:

他们会得到错误:

他们会非常困惑,为什么他们easy_install没有--user选项,而在线上有明确的页面描述了该选项。他们可能会尝试将其升级easy_install到最新版本并发现它仍然失败。

如果他们继续咨询Python打包专家,他们会发现有两个版本easy_install都命名为“easy_install"以便最大程度地混淆”,但一个是“distribute”,另一个是“setuptools”。恰好是只有"easy_install"支持和"distribute"绝大多数"--user"服务器/系统管理员安装"setuptools"easy_install所以本地安装是不可能的。请记住,对于非 Python 包管理专家的人来说,和之间的这些区别"distribute""setuptools"没有意义的并且难以理解。

在这一点上,即使是尝试安装我的软件包的最坚定、最精明和耐心的用户,我也会失去 90% 的用户——这是理所当然的!他们想安装一个碰巧用 Python 编写的软件,而不是成为最先进的 Python 包分发方面的专家,这太令人困惑和复杂了。他们会放弃并为浪费的时间感到沮丧。

继续询问更多 Python 专家的极少数用户将被告知他们应该pip/virtualenv使用easy_install. 安装pipvirtualenv弄清楚这些工具是如何工作的,以及它们与传统"python setup.py""easy_install"调用的不同之处本身就是耗时且困难的,对于只想安装一个简单的 Python 软件并使用它的用户来说,要求也太高了。即使是那些追求这条道路的人也会对他们安装的任何依赖项是否仍然可用easy_install或者是否需要从头开始重新安装所有依赖项感到困惑。setup.py install --prefixpip/virtualenv

如果一个或多个有问题的包依赖于安装与默认版本不同的 Python 版本,则此问题会更加严重。确保您的 Python 包管理器使用的是您想要的 Python 版本,以及确保所需的依赖项安装在相关的 Python 2.x 目录而不是 Python 2.y 中的困难,将让用户无休止地感到沮丧,以至于他们肯定会在那个阶段放弃。

有没有更简单的方法来安装 Python 软件,不需要用户深入研究 Python 包、路径和位置的所有这些技术细节?例如,我不是 Java 大用户,但我偶尔会使用一些 Java 工具,并且不记得曾经担心我正在安装的 Java 软件的 X 和 Y 依赖关系,而且我不知道 Java 是如何打包的管理作品(我很高兴我不这样做——我只是想使用一个碰巧用 Java 编写的工具。) .

是否有 Python 的等价物?以一种不依赖于用户必须追逐所有这些依赖项和版本的方式分发软件的方法?一种可能将所有相关包编译成独立的东西的方法,可以下载并用作二进制文件?

我想强调的是,即使将软件包分发给精通的 Unix 用户的狭隘目标也会发生这种挫败感,这使问题变得更简单,无需担心跨平台问题等。我假设用户精通 Unix,甚至可能了解 Python,但只是不了解(也不想被告知)Python 打包的来龙去脉以及不同包管理器的无数内部复杂性/竞争。这个问题的一个令人不安的特点是,即使您的所有 Python 包依赖项都是众所周知的、编写良好且维护良好的 Pypi 可用包(如 Pandas、Scipy 和 Numpy),它也会发生。这不像是我依赖于一些不是格式正确的包的晦涩依赖:相反,我使用的是许多人可能依赖的最主流的包。

对此的任何帮助或建议将不胜感激。我认为 Python 是一门很棒的语言,拥有很棒的库,但我发现几乎不可能以一种易于人们在本地安装并运行的方式分发我用它编写的软件(一旦它具有依赖项)。我想澄清一下,我正在编写的软件不是用于编程使用的 Python 库,而是具有用户作为单独程序运行的可执行脚本的软件。谢谢。

0 投票
0 回答
1208 浏览

python - 使用 PyInstaller 将 setup.py Python 项目转换为二进制文件?

我有一个使用标准setup.py设置描述的项目,其中一些.py文件是可执行的(在scripts=包的一部分中),一些.py文件只是这些脚本文件导入的库。

有没有办法使用 PyInstaller 将此设置转换为一系列二进制文件,setup.py以便将脚本描述的每个文件都制成可执行文件?其余的.py是内部库,因此当然不需要转换这些库,并且一旦生成二进制文件就没有用处。

澄清一下,我只对制作 Mac OS X 和 Linux 二进制文件感兴趣,而不是 Windows。谢谢。