这听起来像一个奇怪的问题,所以我将首先解释周围的情况.
基本上,我有一个用Python编写的3D游戏开发工具包,它本身就能很好地工作.但是,我的大多数用户都习惯使用Lua作为脚本语言,因此我开始研究Lua-Python绑定.
我和Stefan Behnel的神奇Lupa图书馆一起定居下来.但是,它基本上要求最终用户知道如何编译应用程序,这对我的GDK来说是不可接受的.此外,我通常只能访问Linux系统,并且由于我的游戏开发工具包在Windows和Mac OSX上运行,因此Windows二进制文件总是落后,我的OSX用户必须自己编译我的GDK.
有谁知道另一种选择?谢谢!
PS:我已经尝试过Lunatic Python,Lux太过时了.
我需要一种方法在运行时找到我的每个Python包的子模块的依赖关系,所以我可以在一个正确的顺序初始化它们(见我的电流[ 编辑: 原 ]的解决方案在这里,它不工作,很好),所以起初我使用标准的Python模块modulefinder,但这太慢了(每个模块大约1-2秒).
我的下一个选择是分析每个模块的所有全局变量,并从每个子模块所依赖的子模块的全局变量中找到.(这是我目前的解决方案编辑:我现在有一个更好的解决方案 - 请参阅我的答案).该算法是多快于modulefinder(它需要每个模块<200毫秒),但它仅适用,而不是完全限定进口的风格,这是不能接受的相对进口.
所以,我需要的是:
注意:我在每个模块的开头调用我的依赖分析器,如下所示:
# File my_package/module3.py
import my_package.module1 # Some misc. module
import my_package.module2 # Some other misc. module
import my_package.dependency_analyzer
my_package.dependency_analyzer.gendeps()
Run Code Online (Sandbox Code Playgroud)
(以防它可以帮助你.)
谢谢!
编辑:我现在有一个解决方案 - 看我的答案.