在什么时候你会创建自己的异常类而不是使用java.lang.Exception?(所有的时间?只有在包装外使用它?只有它必须包含高级逻辑?等等...)
我正在编写一个库来收集我将在不同应用程序中使用的各种函数.我希望它为库的用户生成可见的日志语句,即,如果我正在构建应用程序并且我正在使用该库,我希望库生成对我可见的日志语句.我怎么做?由于日志文件将由应用程序的开发人员配置,我的库如何知道如何记录?
我维护了一些Python包.我有一个非常相似的setup.py
文件.但是,在做的时候setup.py install
,我的一个软件包被安装为一个鸡蛋,而其他软件包被安装为"鸡蛋文件夹",即扩展名为"egg"的文件夹.
它们之间有什么区别导致这种不同的行为?
我想从python包创建一个mac osx应用程序,然后将其放入磁盘映像中.
因为我加载一些资源出来的包,包应该不会驻留在一个zip文件.
生成的磁盘映像应显示背景图片以"拖动此处 - >应用程序"进行安装.
我正在为编译器编写器的新Haskell包快速而疯狂地工作.我每天都会经历许多次要版本号,而Haskell打包系统Cabal似乎没有提供任何更新版本号或维护更改日志的工具.(日志正在进入,git
但是使用该软件包的任何人都看不到.)我会杀掉与Debian uupdate
或dch
/ debchange
tools 相当的东西.
有没有人知道可以用来自动增加版本号并在更改日志中添加条目的通用工具?
我正在尝试使用Symfony2控制台库构建CLI工具.我有一些基本的工作,现在我想把它打包成一个phar.我已经阅读了一些例子,但我看到的那些非常简单(3个文件,没有命名空间等).
在我的src/
目录中,我有以下内容:
上面src/
我有一个console.php
我执行运行应用程序.我也有一个vendors/
目录,因为我正在使用composer来安装依赖项.console.php
很简单:
#!/usr/bin/env php
<?php
set_time_limit(0);
$loader = require 'vendor/autoload.php';
use Symfony\Component\Console\Application;
use Bendihossan\Pinfo\Command\EnvironmentCommand;
use Bendihossan\Pinfo\Command\ExtensionsCommand;
use Bendihossan\Pinfo\Command\RunAllCommand;
$console = new Application();
$console->add(new RunAllCommand());
$console->add(new EnvironmentCommand);
$console->add(new ExtensionsCommand);
$console->run();
Run Code Online (Sandbox Code Playgroud)
从我对构建一个phar的理解(我很少)我认为我需要将其console.php
作为存根和其他所有内容src/
添加到我的所有依赖项中vendors/
.
查看phpmaster.com上的示例代码,他们手动指定每个文件包含在phar中使用file_get_contents
,但是我需要维护我的目录结构才能使用composer的自动加载器并保持PSR-0目录结构.
有没有一种简单的方法来创建.phar并在其中维护我的目录结构,所以我仍然可以使用composer的自动加载器?
我怎么能包括package_data
为sdist
没有MANIFEST.in文件?
我的setup.py看起来像这样:
import setuptools
setuptools.setup(
name='foo',
version='2015.3',
license='commercial',
packages=setuptools.find_packages(),
package_data={'': ['foo/bar.txt']},
)
Run Code Online (Sandbox Code Playgroud)
版本:
user@host> python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
>>> import setuptools
>>> setuptools.version.__version__
'3.6'
Run Code Online (Sandbox Code Playgroud)
我只是不能被foo/bar.txt
包括在内.
或者这篇博文仍然是真的吗? http://blog.codekills.net/2011/07/15/lies,-more-lies-and-python-packaging-documentation-on--package_data-/
然而,在过去的一小时里,我了解到这些陈述介于"危险的误导"和"该死的谎言"之间.这是因为Python包的主要类型是源包,而创建源包的规范方法是使用setup.py sdist
.但是,package_data中指定的数据不包含在源代码分发中 - 它们仅包含在binary(setup.py bdist
)发行版和installs(setup.py install
)中.
我怎么能包括package_data
为sdist
没有MANIFEST.in文件?
我有一个用python编写的工具,通常应该作为守护进程运行.打包此工具以进行分发的最佳做法是什么,尤其是如何处理设置文件和守护程序可执行文件/脚本?
相关的是,是否有任何常用的工具可以设置守护进程在开机时运行,以适合给定的平台(即linux上的init脚本,windows 上的服务,osx上的launchd)?
不好意思拿出这个话题再次,因为有洙 许多 其他已经相关的问题-但没有直接涉及我的问题.
我正在搜索的是一个很好的版本控制系统,只能处理两个简单的要求:
为什么?我们正在为我们的下一个大型操作系统部署重新打包几千个软件应用程序,我们希望这些软件包遵循版本控制.
到目前为止,我已经有了一些SVN和CVS的经验,但是我对两个大型二进制文件的性能都不太满意(一些MSI或CAB文件将> 1GB).此外,我不确定他们是否能够在未来2 - 5年内按照我们期望的数据量进行调整(就像我说的那样,估计> 1TB)
那么,你有什么建议吗?我目前也在研究SVN外部和Git子模块,虽然这意味着每个软件包都有几个单独的存储库,但我不确定这是我们想要的......
假设python包A需要B,C和D; 有没有办法列出A→BCD而不加载它们?
Requires
在metadata(yolk -M A
)中经常是不完整的,grr.
可以下载A.tar/A.egg,然后查看A/setup.py,但其中一些非常血腥.
(我认为至少可以获得一级依赖关系;即使是98%的解决方案也会比雪崩下载更好.)