Recipes是从一本书上看来的,即有诀窍又有食谱的意思。这里想记一些工作中遇到的问题和解决方法,说决窍有点过了,说食谱照单做又不足,所以Recipe这个词两个意思都有混合起来正合适。

1、Windows上的PyInstaller,在bootloader开始运行时会调用SetDllDirectory() Win32 API来限定Dll的搜索目录。如果你打包程序里面会调用或依赖外部DLL这将报WinError 126错误,所以需要在bootloader运行之后、你的外部DLL加载之前取消这个限制。至于如何取消请参考MSDN,bootloader对SetDllDirectory()的调用请参考PyInstaller bootloader代码。

2、已有Python实现库,如何做成万金油C接口、放在DLL里面给其它语言调用?有一种对自己看起来颇折腾实则省缺了重复实现、用户又感觉不到的办法:把你自己的Python库和绿色版的Python解释器当作DLL资源嵌进去。在DLL_PROCESS_ATTACH时释放解释器和自己的库到临时目录,DLL_PROCESS_DETACH时清理,在接品实现中用Python C API调自己的库。其实这个想法来源于PyInstaller,是模仿了它的做法。具体实作:可以用7Zip把自己的库和Python解释器各打一个自解压包,这样解压的工作轻松一些;如果自己的库用Cython编译成.pyd了要想在退出时干净地清理那就麻烦些:Python解释器运行期间会一直持有这个.pyd的句柄,即使你调FreeLibrary()也不行——解决办法:Hook ExitProcess()。

3、绿化Python有个好处:定制性好,在别的电脑上跑时不用担心人家没装Python或者装了有版本冲突。但也有个麻烦的地方:Python.exe的绝对路径被写到了pip.exe里面,but why? 解决办法可参考这里:Create a portable Python with Pip on Windows。不过即使这样做了也还不够彻底,还有其它工作要做。计划有空看看WinPython是怎么做的。

4、写新代码时要思路清晰了再动手,写完之后对着代码在脑子里演练验证一下思路,没疑问了清晰了再运行测试,可减少不少代码调试的时间。

Programming Recipes的更多相关文章

  1. <转载>国外程序员推荐的免费编程书籍资源

    一.George Stocker 提供了一大串,分类如下: How to Design Programs: An Introduction to Computing and Programming 2 ...

  2. OpenGL book list

      From: https://www.codeproject.com/Articles/771225/Learning-Modern-OpenGL   A little guide about mo ...

  3. 5 Techniques To Understand Machine Learning Algorithms Without the Background in Mathematics

    5 Techniques To Understand Machine Learning Algorithms Without the Background in Mathematics Where d ...

  4. 机器学习的5种“兵法"

    大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言“机构名称+转载”,申请过授权的不必再次申请,只要按约定转载即可. 作者:Jason Brownlee 译者:Clair ...

  5. Github上的1000多本免费电子书重磅来袭!

    Github上的1000多本免费电子书重磅来袭!   以前 StackOverFlow 也给出了一个免费电子书列表,现在在Github上可以看到时刻保持更新的列表了. 瞥一眼下面的书籍分类目录,你就能 ...

  6. Github 的一个免费编程书籍列表

    Index Ada Agda Alef Android APL Arduino ASP.NET MVC Assembly Language Non-X86 AutoHotkey Autotools A ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (15) -----第三章 查询之与列表值比较和过滤关联实体

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-8与列表值比较 问题 你想查询一个实体,条件是给定的列表中包含指定属性的值. 解 ...

  8. Programming Entity Framework 翻译

    刚开始接触.net,c#语法应该说还没掌握好.学习实践的旅程就从linq和EF开始吧.感觉相比之前的开发方式,linq和EF方便好多. linq入门用了好久,因为c#不行,补习了2.0的泛型,3.0和 ...

  9. iOS Programming Recipe 6: Creating a custom UIView using a Nib

    iOS Programming Recipe 6: Creating a custom UIView using a Nib JANUARY 7, 2013 BY MIKETT 12 COMMENTS ...

随机推荐

  1. NLTK学习笔记(二):文本、语料资源和WordNet汇总

    目录 语料库基本函数表 文本语料库分类 常见语料库及其用法 载入自定义语料库 词典资源 停用词语料库 WordNet面向语义的英语字典 语义相似度 语料库基本函数表 示例 描述 fileids() 语 ...

  2. 那么再会吧!OI!(HNOI2019退役记)

    现在是4月7号7点. 退役了. 至此,整个LSOI17届全部毕业. 想说些什么呢?不知道啊. day1紧张过头,真正开始了解题意是在11点以后.半路忘了kmp怎么打,第一题计算几何根本没管,好啊,第三 ...

  3. QuickTest Professional对web网站进行测试后没有生成脚本信息解决办法

    QTP是Quick Test Professional的简称,是一种自动测试工具.使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本.因此你在测试前要考虑好如何对 ...

  4. js给对象onclick事件赋值

    1)当方法没有参数时,赋值可以直接用onclick = 方法名 window.onload = function() { $('btnTest').onclick = test; } function ...

  5. List集合中把其中一个元素 调整到集合的第一位

    要求:现在想把集合中的某个元素,放到该集合的第一个位置,但是其他元素的顺序不需要管. 方法:需要遍历集合,找到这个元素在集合中的位置,然后使用Collections.swap(list,o,i) (O ...

  6. Future和Callable的使用

    应用场景 财务成本核算.可能会有多个耗时的步骤.如果顺序执行是非常慢的.再相互数据获取数据不依赖的情况下可以使用Future并行执行 public class FutureTest implement ...

  7. Arcengine设置坐标系

    转自原文 Arcengine设置坐标系 ArcGIS Engine提供了一系列对象供开发者管理GIS系统的坐标系统. 对大部分开发者而言了解ProjectedCoordinateSystem, Geo ...

  8. POJ 1966

    求的是无向图的点连通度.开始便想到网络流,既然选的是点,当然就要拆点加边了.但无论如何也不敢往枚举源汇点的方向想,因为网络流复习度很高.看看网上大牛的,都是枚举,再看数据,原来N才50个点,枚举无压力 ...

  9. php类似shell脚本的用法

    参考: http://www.cnblogs.com/myjavawork/articles/1869205.html php还可以用于类似于shell脚本,哈哈,对编程语言和对整个计算机系统的认识又 ...

  10. MySQL经常使用命令--show命令使用

    log into the mysql for localhost mysql -u username -ppasswd(there is no space) for ip mysql -h ip -P ...