小编Sal*_*ley的帖子

通过COM独立控制2个独立的Excel实例......可以这样做吗?

我有一个遗留应用程序,它在许多Excel工作簿中实现.这不是我有权重新实现的,但是我维护的另一个应用程序确实需要能够在Excel工作簿中调用函数.

它已经使用Win32Com库给出了一个python接口.其他进程可以调用我的python包中的函数,然后通过Win32Com调用我需要的函数.

不幸的是COM不允许我指定特定的COM进程,所以目前无论我的服务器有多强大,我只能在计算机上一次控制一个Excel实例.如果我试图运行多个excel实例,则无法确保python层绑定到特定的Excel实例.

我希望能够同时在我的Windows服务器上运行多个我的Excel应用程序.有没有办法做到这一点?例如,我可以划分我的环境,以便我可以运行尽可能多的Excel _ Python组合,因为我的应用程序将支持?

python windows com excel

6
推荐指数
2
解决办法
3325
查看次数

如何确保Hudson中只有一种类型的作业同时运行?

我使用Hudson自动测试一个非常大的重要产品.我想让我的测试主机能够运行尽可能多的并发构建,因为它们理论上会支持,除了excel-tests,它必须在每台机器上随时运行一个.任何数量的非excel测试都可以同时运行,但每台机器最多只能运行一次excel测试.

背景:

我的大多数测试都是正常的单元测试 - 我可以轻松地并行运行.遗憾的是,我的单元测试计划中的一个实质性且耗时的部分包括已在Excel中实现的测试.

您可能认为在Excel中实施测试很疯狂 - 实际上有一个重要原因:我们的大多数用户通过Excel访问我们的系统.Excel有自己古怪的数据处理方式,所以保证我们的东西适用于Excel用户的唯一方法就是逐字实现我们的Excel应用程序的注册测试.

我编写了一个测试运行工具,它允许我轻松地启动一组excel测试:每个测试都是一个.xls文件.每个组都是一个充满excel文件的文件夹.我有大约30个小组需要运行进行端到端测试.我的工具将每个测试的结果转换为Hudson能够理解的JUnit样式XML.测试使用pywin32com库来自动化excel.当他们自己运行时,他们是可靠的.

我有一组专门用于运行测试的计算机.每台机器都是四核的,理论上可以同时运行很多东西.不幸的是,我发现COM不能用于一次安全地控制每台机器超过1个excel.

也就是说,如果第二个构建星试图通过COM与Excel通信它可能会干扰已经运行的那个并导致两个测试都失败.

我可以运行许多其他非excel进程,因为机器将允许但我需要找到一种方法,以便Hudson不会尝试启动任何超过1个进程,这需要同时在任何一台机器上excel.

hudson

5
推荐指数
1
解决办法
4369
查看次数

远程执行任意python代码 - 可以这样做吗?

我正在研究一个有很多非常强大的计算机的网格系统.这些可以用来非常快速地执行python函数.我的用户有许多python函数需要很长时间才能在工作站上进行计算,理想情况下,他们希望能够在远程强大的服务器上调用某些函数,但是它似乎在本地运行.

Python有一个名为"apply"的旧函数 - 现在python支持扩展调用语法(例如**参数),这几乎没用,但是我需要实现一些有点像这样的东西:

rapply = Rapply( server_hostname ) # Set up a connection
result = rapply( fn, args, kwargs ) # Remotely call the function
assert result == fn( *args, **kwargs ) #Just as a test, verify that it has the expected value. 
Run Code Online (Sandbox Code Playgroud)

Rapply应该是一个类,可以用来远程执行fn远程服务器上的一些任意代码(可能是任何字面上的东西).它将发回rapply函数将返回的结果."结果"应该具有相同的值,就像我在本地调用函数一样.

现在让我们假设这fn是一个用户提供的函数,我需要某种方式通过线路将它发送到执行服务器.如果我能保证fn总是很简单,它可能只是一个包含python源代码的字符串......但是如果它不那么简单呢?

如果fn可能有本地依赖项:它可能是一个简单的函数,它使用在不同模块中定义的类,是否有一种封装方式fn以及fn需要哪些不是标准库?理想的解决方案不需要该系统的用户对python开发有太多了解.他们只是想写他们的功能并调用它.

为了澄清,我对讨论可能使用哪种网络协议来实现客户端和服务器之间的通信感兴趣.我的问题是如何将函数及其依赖项封装为可以序列化和远程执行的单个对象.

我也对在远程服务器上运行任意代码的安全性问题不感兴趣 - 我们只是说这个系统纯粹是为了研究而且是在一个严重防火墙的环境中.

python grid

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

从Spring Python开始,最好的在线教程是什么?

Spring Python似乎是如何在Python中定义高质量API的黄金标准 - 它基于Spring,它似乎也是Java API的黄金标准.

我的经理抱怨(有充分的理由)我们的API乱七八糟 - 我们需要对它们强加一些订单.由于我们将重新分解,因此利用被认为是最佳实践的方法是有意义的 - 所以我们想考虑Spring.

有人能指出我开始使用Spring的最佳学习资源吗?我用Google搜索了一段时间,没有找到任何似乎从第一原则开始的东西.我正在寻找一些能够充分了解Python但在其他平台或其原则上对Spring缺乏了解的东西.

谢谢

python spring

5
推荐指数
1
解决办法
2227
查看次数

是否有标准的第三方Python缓存类?

我正在研究一个需要从网络数据库加载数据的客户端类.有人建议,向客户端添加标准缓存服务可以提高其性能.

我非常希望不必构建自己的缓存类 - 众所周知,这些提供了常见的失败点.使用其他人开发的类而不是花费大量时间来调试自制的缓存系统会好得多.

Java开发人员有这个:http: //ehcache.sourceforge.net/

它是一个通用的高性能缓存类,可以支持各种存储.它有基于时间的到期和其他垃圾收集方法的选项.它看起来非常好.不幸的是我找不到任何对Python有用的东西.

那么,有人可以建议一个可供我使用的缓存类.我的愿望清单是:

  • 能够限制缓存中的对象数量.
  • 能够限制缓存中对象的最大年龄.
  • LRU对象expirey
  • 能够选择多种形式的存储(例如内存,磁盘)
  • 经过良好调试,维护良好,至少由一个众所周知的应用程序使用.
  • 很好的表现.

那么,有什么建议吗?

更新:我正在寻找对象的LOCAL缓存.我连接的服务器已经被高度缓存.Memcached不合适,因为它需要Windows客户端和服务器之间的额外网络流量.

python design-patterns

5
推荐指数
1
解决办法
1130
查看次数

如何对我的单元测试进行有意义的代码覆盖分析?

我管理着一个非常大的金融定价系统的测试.最近我们的总部坚持要求我们验证项目的每个部分都有一个有意义的测试.至少他们想要一个系统,保证当我们改变某些东西时,我们可以发现对其他子系统的无意改变.他们最好想要一些能够验证系统中每个组件正确性的东西.

这显然是相当多的工作!这可能需要数年时间,但对于这种项目来说,这是值得的.

我需要找出我们的代码的哪些部分不在我们的任何单元测试中.如果我知道我的系统的哪些部分未经测试,那么我可以着手开发新的测试,最终将达到我完全测试覆盖的目标.

那么我该如何进行这种分析呢?我可以使用哪些工具?

我在Windows 32位XP上使用Python 2.4

UPDATE0:

只是为了澄清:我们有一个非常全面的单元测试套件(加上一个单独且非常全面的regtest套件,超出了本练习的范围).我们还有一个非常稳定的持续集成平台(由Hudson构建),旨在在我们的测试设施中拆分和运行标准的python单元测试:根据公司规范制造大约20台PC.

本练习的目的是填补我们的python单元测试套件(仅)套件中的任何空白,以便每个组件都具有一定程度的单元测试覆盖率.其他开发人员将负责项目的非Python组件(也在范围之外).

" 组件 "有意模糊:有时它会成为一个类,有时则是整个模块或模块组件.它甚至可能涉及单一的金融概念(例如,单一类型的金融期权或许多类型期权使用的金融模型).这种蛋糕可以多种方式切割.

" 有意义的 "测试(对我而言)是验证该功能是否符合开发人员最初的意图的测试.我们不想简单地在纯python中重现regtests.开发人员的意图通常不是立即显而易见的,因此需要研究和澄清任何看似模糊的东西,然后在单元测试中将这些知识包含在内,这使得原始意图非常明确.

python testing

5
推荐指数
1
解决办法
2957
查看次数

使用 Python 以编程方式检测 Windows XP 上的系统代理设置

我开发了一家跨国公司使用的关键应用程序。全球各地办公室的用户都需要能够安装此应用程序。

该应用程序实际上是 Excel 的一个插件,我们有一个基于 Setuptools 的 easy_install 的自动安装程序,可确保用户每次打开 Excel 时自动安装或更新项目的所有依赖项。这一切都运行得非常优雅,因为用户很少意识到所有安装完全在后台进行。

不幸的是,我们正在扩大和开设新的办事处,这些办事处都有不同的代理设置。这些设置似乎每天都在变化,因此我们无法跟上那些在不告诉我们的情况下更改内容的外包安全人员。这很糟糕,但我们必须解决它。

我想以编程方式检测用户运行的 Windows 工作站上的系统范围代理设置:

组织中的每个人都运行 Windows XP 和 Internet Explorer。我已经证实,每个人都可以毫无问题地从 IE 下载我们的东西,无论他们在世界的哪个地方。

因此,我需要做的就是检测 IE 正在使用哪些代理设置,并让安装工具使用这些设置。理论上所有这些信息都应该在注册表中..但是有没有更好的方法来找到它并保证不会随着人们升级 IE 而改变?例如,我可以使用 Windows API 调用来发现代理设置吗?

总之:

  • 我们在 Windows XP 上使用 Python 2.4.4
  • 我们需要检测 Internet Explorer 代理设置(例如主机、端口和代理类型)
  • 我将使用此信息动态地重新配置 easy_install,以便它可以通过代理下载 Egg 文件。

更新0:

我忘记了一个重要的细节:每个站点都有一个自动配置“pac”文件。

Windows\CurrentVersion\InternetSettings\AutoConfigURL 中有一个键,它指向本地服务器上的 HTTP 文档,其中包含看起来像 JavaScript 文件的内容。

pac 脚本基本上是一系列嵌套的 if 语句,它将 URL 与正则表达式进行比较,然后最终返回所选代理服务器的主机名。该脚本是一个名为 FindProxyForURL(url, host) 的 JavaScript 函数

因此,挑战在于找出任何给定服务器要使用哪个代理。唯一 100% 保证执行此操作的方法是查找 pac 文件并从 Python 调用 Javascript 函数。

有什么建议么?有没有更优雅的方法来做到这一点?

python windows proxy networking setuptools

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

是否有可以从Hudson/Jenkins获取工件的Ant任务?

我已经手工推出了我的项目的构建系统(主要是在Python + Hudson中).我经常需要做的一件事就是从上游Hudson/Jenkins那里获取工件.

这些工件几乎可以是任何东西 - 例如一个包含要处理的业务数据的zip文件,甚至包含必须测试的python代码加载的egg.几乎我们系统中的每一项重要工作都有上游依赖于其他Hudson工作所产生的工件.

我的经理建议构建系统的下一次迭代应该用Ant替换我的一些手动组件.下一次迭代的目的是降低系统的复杂性,使其与主要使用Java和Ant(以及非常少的Python)的其他团队的工作保持一致.

我个人也热衷于借口学习Ant.它似乎是一个非常有用的工具.

因此,为了不重新发明轮子,我肯定需要的是一个Ant任务,它可以从特定的Hudson构建中获取工件.这样的事情存在吗.如果它不存在,有什么接近我的要求,我可以自定义?我宁愿不重新发明轮子.


更新1:我们非常喜欢100%免费的开源工具.团队中的每个人都对Ant非常满意,但是Maven是团队试图摆脱的东西.

python java ant hudson jenkins

5
推荐指数
1
解决办法
1585
查看次数

如何创建一个锁定的python环境?

我负责开发一个在世界各地设有办事处的金融机构使用的大型Python/Windows/Excel应用程序.最近,一个国家的法规发生了变化,因此我们被告知我们需要创建一个"锁定"版本的发行版.

在与我的外国同行进行了一些令人沮丧的对话后,似乎他们担心有人可能会误用他们计算机上的python解释器来生成可能用于规避安全性的非标准应用程序.

我最初的建议只是取消对python.exe和pythonw.exe的执行权限:我们的应用程序是一个只使用Python DLL的Excel插件.那些exe文件从未实际使用过.

我的对手仍然关注有人可以对Python DLL进行调用 - 黑客可以利用"exec"函数,例如来自另一种编程语言或能够调用Windows DLL中的函数的虚拟机,例如VBA.

我们可以采取哪些措施来防止我们想要安装的DLL被滥用?在这一点上,我没有想法.我需要找到一种方法来确保Python只运行我们的授权程序.

当然,这个问题有一个荒谬的因素:由于计算机都有Excel和Word,因此它们都有VBA,这是一种众所周知的脚本语言,在某种程度上与Python相当.

当Excel的VBA开放时,担心python显然没有意义,但这是企业政治,我的团队建议使用Python,所以我们需要证明我们的东西可以合理安全.

python windows security excel

4
推荐指数
1
解决办法
704
查看次数

在Eclipse中,PyDev有没有办法从Pydev Package资源管理器中排除任意文件类型?

如果在PyDev包资源管理器中单击类似于下划线三角形的图标,然后选择"自定义视图",则"可用自定义"弹出窗口允许用户选择包中可见的一组标准文件探险家.

如果您希望从视图中排除或包含某些标准类型的文件,那就太好了,但是我想排除PyDev当前不知道的类型.

在这种情况下,我想排除"*,cover" - 这是任何自动生成的报道报告文件.PyDev会在您尝试运行coverage分析时创建这些文件,但似乎没有办法从视图中排除这些文件.我喜欢隐藏所有",封面"文件,以减少我的包浏览器中的混乱.

python eclipse pydev

4
推荐指数
1
解决办法
952
查看次数