Tag: 分发

为什么“python setup.py sdist”在项目根目录下创build不需要的“PROJECT-egg.info”?

当我跑步 python setup.py sdist 它在我的./dist目录下创build一个sdist。 这包括我的“dist”文件夹中的“PROJECT-egg.info”文件,我不使用它,但它不会伤害到我,所以我忽略它。 我的问题是为什么它也会在我的项目根目录中创build一个“PROJECT-egg.info”文件夹? 我可以让它停止创build这个? 如果不是,我可以在创buildsdist后立即删除它吗? 我正在使用从setuptools导入的“设置”function。 WindowsXP,Python2.7,Setuptools 0.6c11,分发0.6.14。 我的设置configuration如下所示: {'author': 'Jonathan Hartley', 'author_email': 'tartley@tartley.com', 'classifiers': ['Development Status :: 1 – Planning', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: Microsoft :: Windows', 'Programming Language :: Python :: 2.7'], 'console': [{'script': 'demo.py'}], 'data_files': [('Microsoft.VC90.CRT', ['..\\lib\\Microsoft.VC90.CRT\\Microsoft.VC90.CRT.manifest', '..\\lib\\Microsoft.VC90.CRT\\msvcr90.dll'])], […]

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

我的目标是分发一个Python包,其中有几个其他广泛使用的Python包作为依赖关系。 我的软件包取决于编写良好的Pypi索引软件包,如pandas,scipy和numpy,并在setup.py中指定需要某些版本或更高版本,例如“numpy> = 1.5”。 我发现对于那些不擅长Python打包(即使他们知道如何编写Python)的Unix精明用户来说,安装像我这样的软件包,即使使用本应该易于使用的软件包pipe理器,也是极其令人沮丧和几乎不可能的。 我想知道是否有人可以提供这个痛苦过程的替代scheme,或者如果我的经验仅仅反映了当前Python封装和分发的困境。 假设用户将你的软件包下载到他们的系统上。 大多数人会尝试安装它“天真”,使用像这样的东西: $ python setup.py install 因为如果你的谷歌说明安装Python包,通常会出现这种情况。 这对绝大多数用户来说是失败的,因为大多数用户在他们的Unix / Linux服务器上没有root权限。 随着更多的search,他们会发现“ – 前缀”选项,并尝试: $ python setup.py install –prefix=/some/local/dir 由于用户没有意识到Python打包的复杂性,他们会select一个任意目录作为–prefix的参数,例如"~/software/mypackage/" 。 它不会是一个干净的pipe理目录,其他所有Python包都驻留在这里,因为大多数用户都不知道这些细节。 如果他们安装另一个软件包“myotherpackage”,他们可能会通过它"~/software/myotherpackage" ,你可以想象这将导致PYTHONPATH和其他并发症的黑客入侵。 继续安装过程,使用"–prefix"调用"setup.py install"也将失败,一旦用户尝试使用该软件包,即使它似乎已经被正确安装,因为其中一个依赖关系可能会丢失(例如pandas,scipy或numpy),并且不使用包pipe理器。 他们将尝试单独安装这些软件包。 即使成功,由于给予"–prefix"的非标准目录, PYTHONPATH包将不可避免地在PYTHONPATH ,患者用户将会修改其PYTHONPATH来获取依赖关系。 在这个阶段,一位Python精明的朋友可能会告诉用户,他们应该使用像"easy_install"的主streampipe理器的软件包pipe理器来安装软件,并且依赖关系被处理。 安装"easy_install" ,可能很难,他们会尝试: $ easy_install setup.py 这也将失败,因为用户通常没有权限在生产Unix服务器上全局安装软件。 随着更多的阅读,他们将了解"–user"选项,并尝试: $ easy_install setup.py –user 他们会得到这个错误: usage: easy_install [options] requirement_or_url … or: easy_install […]

从github项目分发二进制文件的最佳做法是什么?

从github项目分发二进制文件的最佳做法是什么? 我能想到: 在您的项目中创build一个二进制文件副本的bin文件夹。 但是,github是为了存储源代码,而不是二进制文件存储大而定期更改的二进制文件可能是昂贵的磁盘空间和带宽? 将二进制文件的副本上传到项目的github页面 ,或使用单独的网站托pipe您的二进制文件。 然而,这并不总是可行的,并且需要更多(手工)的工作来保持二进制文件的更新,我宁愿要自动更新二进制文件或者只用一个动作。

何时在setup.py中使用pip需求文件与install_requires?

我用virtualenv使用pip来打包和安装一些Python库。 我会想象我正在做的是一个很常见的情况。 我是几个库的维护者,我可以明确地指定依赖关系。 我的一些库依赖于具有传递依赖关系的第三方库,我无法控制它。 我想要实现的是在我的一个库上pip install来下载/安装所有的上游依赖项。 我在pip文档中苦苦挣扎的是if / how 需要的文件是否可以自己做,或者如果他们真的只是使用install_requires一个补充。 我是否会在所有库中使用install_requires来指定依赖项和版本范围,然后仅使用需求文件来解决冲突和/或冻结生产版本? 让我们假装我生活在一个虚构的世界(我知道,我知道),我的上游依赖是直接的,并保证永不冲突或倒退兼容性。 我会被迫使用一个点的需求文件或只是让pip / setuptools /分发安装一切基于install_requires ? 在这里有很多类似的问题,但是我找不到什么时候使用这个或那个的基础,或者和谐地使用它们。

如何使用setuptools / distribute包含包数据?

当使用setuptools / distribute时,我无法让安装程序拉入任何package_data文件。 我读过的所有内容都说明以下是正确的方法。 有人可以请指教? setup( name='myapp', packages=find_packages(), package_data={ 'myapp': ['data/*.txt'], }, include_package_data=True, zip_safe=False, install_requires=['distribute'], ) myapp/data/是数据文件的位置。

什么是安装pip,virtualenv和为Python分发的正确方法?

简短的问题 安装pip , virtualenv和distribute的正确方法是什么? 背景 在我对SO问题4314376的 回答中,我推荐使用ez_setup这样你就可以像下面这样安装pip和virtualenv了: curl -O http://peak.telecommunity.com/dist/ez_setup.py sudo python ez_setup.py sudo easy_install pip sudo pip install virtualenv 我最初从Jesse Noller的博客文章中提取这些说明所以你想在Mac上使用Python? 。 我喜欢保持一个干净的全球站点包目录的想法,所以我安装的唯一的其他软件包是virtualenvwrapper和distribute 。 (我最近添加了distribute到我的工具箱,因为这个Python的公共服务公告 。要安装这两个包,我使用: sudo pip install virtualenvwrapper curl -O http://python-distribute.org/distribute_setup.py sudo python distribute_setup.py 没有更多的setuptools和easy_install 要真正遵循Python公共服务公告 ,在新鲜的Python安装中,我会执行以下操作: curl -O http://python-distribute.org/distribute_setup.py sudo python distribute_setup.py sudo easy_install pip sudo pip install virtualenv sudo pip […]

分发,distutils,setuptools和distutils2之间的区别?

情况 我试图将一个开源库移植到Python 3.( SymPy ,如果有人想知道)。 所以,我需要为Python 3构build时自动运行2to3 。为此,我需要使用distribute 。 因此,我需要移植目前的系统,这(根据doctest)是distutils 。 问题 不幸的是,我不确定这些模块之间有什么区别 – distutils , distribute , setuptools 。 文档最好是粗略的,因为它们似乎都是彼此分叉的,意图在大多数情况下(但实际上并非全部)兼容,等等。 问题 有人可以解释这些差异吗? 我该用什么? 什么是最现代化的解决scheme? (另外,我还要感谢一些关于移植到Distribute指南,但这超出了问题的范围。)