标签: packaging

分布,distutils,setuptools和distutils2之间的差异?

情况

我正在尝试将一个开源库移植到Python 3.(SymPy,如果有人想知道的话.)

所以,我需要2to3在为Python 3构建时自动运行.为此,我需要使用distribute.因此,我需要移植当前系统(根据doctest)distutils.


问题

不幸的是,我不知道什么是这些模块-之间的区别distutils,distribute,setuptools.文档是最好的粗略,因为它们似乎都是彼此的分支,旨在在大多数情况下兼容(但实际上,不是全部)......等等.


问题

有人可以解释这些差异吗?我应该用什么?什么是最现代的解决方案?(Distribute顺便说一句,我也很欣赏一些关于移植的指南,但这有点超出了问题的范围......)

python packaging distutils setuptools distribute

588
推荐指数
3
解决办法
8万
查看次数

使用Maven在jar中包含依赖项

有没有办法强制maven(2.0.9)在一个jar文件中包含所有依赖项?

我将一个项目构建到一个jar文件中.我希望将依赖项中的类复制到jar中.

更新:我知道我不能在jar文件中包含一个jar文件.我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中.

java maven-2 packaging jar

329
推荐指数
9
解决办法
40万
查看次数

py2exe - 生成单个可执行文件

我以为我听说py2exe能够做到这一点,但我从未弄明白.有没有人成功完成这个?我可以看到你的setup.py文件,以及你使用的命令行选项吗?

基本上我正在考虑给它一个可执行文件,它可以像解压缩/ temp和运行一样.

python packaging py2exe

138
推荐指数
4
解决办法
15万
查看次数

如何使用Language.Haskell.Interpreter发送可执行文件?

我希望能够嵌入一个Haskell解释器,hint这样我就可以在Haskell中编写插件来与我的程序一起使用.我不想为我的可执行文件发布整个Haskell平台.

通常,Haskell可执行文件是非常独立的.例如,擦除PATH不会导致问题:

$ PATH=. Hello
Hello world
Run Code Online (Sandbox Code Playgroud)

但是,runInterpreter如果我删除了一个简单的测试程序使用炸弹PATH:

$ PATH=. TryHint
GhcException "panic! (the 'impossible' happened)\n  (GHC version 7.8.3 for x86_64-apple-darwin):\n\tDynamic linker not initialised\n\nPlease report this as a GHC bug:  http://www.haskell.org/ghc/reportabug\n"
Run Code Online (Sandbox Code Playgroud)

环境中必须提供哪些库或可执行文件才能使其工作?

otool 没有提供太多指导:

otool -L TryHint
TryHint:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
    /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
    /usr/local/lib/libgmp.10.dylib (compatibility version 13.0.0, current version 13.0.0)
Run Code Online (Sandbox Code Playgroud)

测试代码TryHint没有做太多:

import Control.Monad
import Language.Haskell.Interpreter

main = do
  f <- runInterpreter …
Run Code Online (Sandbox Code Playgroud)

haskell packaging shipping

136
推荐指数
1
解决办法
2025
查看次数

setuptools vs. distutils:为什么distutils仍然是一个东西?

Python就可以用于打包和描述项目的工具,一个令人困惑的历史:这些包括distutils标准库中,distribute,distutils2,和setuptools(也许更多).看来,distributedistutils2赞成被中止setuptools,这让两个相互竞争的标准.

据我所知,setuptools提供了更多的选项(例如声明依赖项,测试等)distutils,但它没有包含在Python标准库中(但是?).

所述的Python包装用户指南 [ 1 ]现在建议:

使用setuptools定义的项目和创建源代码分发.

并解释说:

尽管您可以distutils在许多项目中使用pure ,但它不支持在其他项目上定义依赖项,并且缺少一些便于实际自动填充包提供的包元数据的便利实用程序setuptools.作为标准库之外,setuptools还在不同版本的Python中提供更一致的功能集,并且(不同distutils)setuptools将更新以在所有支持的版本上生成即将推出的"Metadata 2.0"标准格式.

即使是那些选择使用的项目distutils,当pip直接从源代码安装这样的项目时(而不是从预先构建的wheel文件安装),它实际上会使用setuptools而不是使用它来构建项目.

但是,查看各种项目的setup.py文件会发现这似乎不是一个真正的标准.许多软件包仍在使用,distutils而那些支持setuptools经常混合setuptools使用,distutils例如通过执行后备导入:

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup
Run Code Online (Sandbox Code Playgroud)

接着尝试找到一种方法来编写可由两者setuptools和两者安装的设置distutils.这通常包括各种容易出错的依赖性检查方法,因为distutils它不支持setup函数中的依赖性.

为什么人们仍然需要额外的努力来支持distutils- 事实setuptools是标准库不是唯一的原因吗? …

python packaging distutils setuptools

129
推荐指数
4
解决办法
3万
查看次数

我应该如何构建一个包含Cython代码的Python包

我想制作一个包含一些Cython代码的Python包.我已经很好地运行了Cython代码.但是,现在我想知道如何最好地打包它.

对于大多数只想安装软件包的人来说,我想要包含.cCython创建的文件,并安排setup.py编译它以生成模块.然后用户不需要安装Cython来安装软件包.

但对于谁可能要修改包的人,我也想提供用Cython .pyx文件,并以某种方式也允许setup.py使用用Cython编译它们(因此这些用户需要安装用Cython).

我应该如何构建包中的文件以满足这两种情况?

用Cython文档提供了一些指导.但它没有说明如何制作一个单独setup.py处理有/无Cython情况.

python packaging cython

120
推荐指数
5
解决办法
2万
查看次数

如何从源代码构建Debian/Ubuntu包?

我有一个程序的源代码(取自cvs/svn/git/...),我想为它构建一个Debian/Ubuntu包.包存在于存储库中,但是:

  • 它是旧版本(缺少我需要的功能)
  • 我需要与默认值略有不同的编译选项.

这样做最简单的方法是什么?我关心的是一些事情

  • 如何检查是否已正确列出所有依赖项?(我可以通过查看旧版本所依赖的内容获得一些提示,但可能已添加了新的依赖项.)
  • 我怎样才能阻止更新系统在更新中的repo中安装旧版本?
  • 我如何阻止系统安装新版本(当它出来时),覆盖我的自定义包?

ubuntu debian packaging

113
推荐指数
5
解决办法
10万
查看次数

如何创建Python egg文件

我对Python中的egg文件有疑问.

我有很多由代码组织的Python代码,我正在尝试创建egg文件.我正在遵循指示,但它们很常见.

根据它,似乎我需要一个setup.py文件.

  1. 你能告诉我我需要在setup.py文件中放入什么以及它应该驻留在哪里吗?
  2. 我想这足以创建setup.py,然后启动"setup.py bdist_egg"来获取egg文件.能否请你确认?
  3. 是否可以仅将.pyc文件包含在egg文件中?
  4. 有.egg文件我怎么能从它启动代码而不解压缩java -jar <jar file>呢?

python packaging egg

88
推荐指数
3
解决办法
10万
查看次数

将简单的Python脚本转换为Windows可执行文件的过程

我写了一个脚本,可以帮助Windows用户进行日常生活.我想简单地向她发送.exe而不是要求她安装python,dll或者必须处理任何其他文件.

我已经阅读了很多关于将Python脚本编译成可执行文件的stackoverflow条目.我有点困惑,因为有很多选择,但有些似乎过时了(自2008年以来没有更新),没有一个对我来说不够简单,因为我花了几个小时就没有问过这个问题.

我希望有更好的,最新的方式来做到这一点.

我调查了一下:

但要么我不能让他们工作或无法理解如何得到我需要的结果.我得到的最接近的是py2exe,但它仍然给了我MSVCR71.dll

我希望得到一步一步的答案,因为我也无法遵循这里的一些调整答案,这些答案需要事先了解如何使用py2exe或其他一些工具.

我正在使用Python 2.5,因为其中一个模块仅适用于该版本.

python packaging software-distribution compilation py2exe

78
推荐指数
5
解决办法
10万
查看次数

如何打包和部署Node.js + express Web应用程序?

我是Node.js编程的新手,我最近使用(快速,主干和其他免费视图技术,使用mongoDB)创建了一个示例工作Web应用程序.现在,我想要在暂存环境中部署相同的内容,我不知道如何打包此应用程序并分发相同的内容.[我可以照顾mongoDb并单独设置]

我来自Java世界,在那里我们为可重用的libs和用于Web应用程序的war/ear包创建jar,它们部署在servlet容器中.现在在这种情况下,因为node.js本身也充当了Web容器,我如何打包我的webapp?

  1. 是否有使用express构建的打包节点webapps的标准格式/指南?(节点应用程序是否有类似的jar/war包装系统?)
  2. 打包后如何部署?它会成为一个exe,因为它也是它自己的容器吗?

PS:截至目前,我正在考虑手动将所有必需的源文件复制到登台环境中,并运行npm命令下载该计算机上的所有依赖项,然后使用"forever"或其他一些机制来运行我的server.js.(另外,添加某种监控,以防app崩溃并永远失败)我不确定这是不是正确的方法?我相信必须有一些标准化的方法来解决这个问题.

packaging web-deployment node.js express

78
推荐指数
5
解决办法
6万
查看次数