繁体   English   中英

在项目中包括图书馆。 最佳实践

[英]Including libraries in project. Best practice

我正在编写一个Python开源应用程序。 我的应用程序使用了一些开源Python库。 这些库又使用其他开源库。

我打算在Sourceforge或Google Code上发布我的代码,但是我需要包括其他库的源代码吗? 这是一个好习惯吗? ...或者我应该只是将此信息写到README文件中,以告知其他所需的库的使用。

我已将所有这些库放入源目录中的libs子文件夹中。 在将代码检入SVN时,是否应该使用svn:externals链接到其他源?

有没有一种方法可以将我的库动态更新到最新版本,或者是在发布新版本时必须手动执行的操作?

如果我的问题听起来含糊,我最诚挚的道歉,但是我在这件事上迷失了方向,我不知道该怎么做。

谢谢大家

使用点子要求文本文件。

只需命名软件包[以及可选的版本]

要求用户在自述文件中执行以下命令。 (如果提供安装脚本,则应在其中调用该脚本;在这种情况下,还应使用Virtualenv

pip install -r requirements.txt

并且您要求中包括的所有库都将安装在该环境中。

您还可以在点数要求中包括svn路径,git路径,Mercurial路径或bzr路径。

请参阅文档: http : //pip.openplans.org/requirement-format.html

如果您所有的库都可以从svn获得,并且您的所有软件包用户都可以从svn安装它,那么您也可以使用svn外部组件; 但是点子要干净得多。

正如其他人所说,不包括库,请在文档中说明要求。 这样,您的项目可以使用用户已经拥有的库,有时由他们的操作系统发行版提供。

但是,请记住,这些外部依赖关系可能存在于不同的版本甚至配置中。 尽可能选择一个稳定的库分支(而不是前沿开发快照)。 当您确实需要该库的特定快照时,将其包含在软件包中可能是一个更好的选择,然后强迫用户在其系统中安装非标准的内容。

通常,您只需将库包含在最终发行版本中,而不必将它们包含在源发行版中。

我认为最常见的做法是告知您的用户您的代码在README.txt文件之类的代码中使用了哪些库和版本号。 您可以为您的代码创建一个Python Egg软件包,其中包含库依赖项(如果它们也包含egg),则可以在安装时随软件包一起下载。 使用setuptools包创建python egg。

通常(对于Python):不要附带您在代码中依赖的其他库的源代码。

只需在网站上以及源附带的说明中声明所需的依赖项(完成所需的最低版本,安装说明等)即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM