我有几个python模块(组织成包),它们 相互依赖 。例如
假设开发应用程序的相关接口在Module4中,而我想使用 cython 生成 Module4.so
。如果我以幼稚的方式进行操作,则会得到扩展Module4.so,但可以导入该扩展, 但 该扩展 依赖于
Module1,Module2,Module3 的python源代码 。
有没有一种方法可以编译Module1,Module2,Module3 并链接 到Module4?我想 避免手动完成所有操作
,例如,首先编译Module1.so,然后在Module2中更改导入声明,以便导入Module1.so而不是Module1.py,然后将Module2编译为Module2.so,依此类推。
谢谢!
编辑。前两个选项涉及Cython的特定代码,我想念的是关于纯python模块的问题,因此选项3是解决方案。
有几种选择:
1.参见以下“如何在包中创建模块层次结构”:https
:
//github.com/cython/cython/wiki/PackageHierarchy
2.我更喜欢“
include”语句:http :
//docs.cython.org/src/userguide/language_basics.html#the-include-
statement我有很多.pyx文件,它们都包含在main.pyx中,全部集中在一个名称空间中。结果是一个很大的模块:http
:
//code.google.com/p/cefpython/source/browse/cefpython.pyx
3.您可以使用安装程序通过添加多个“扩展”来一次编译所有模块:
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension("example", sourcefiles), Extension("example2", sourcefiles2), Extension("example3", sourcefiles3)]
)
4.更有效的编译-请参见此处。
setup (
name = 'MyProject',
ext_modules = cythonize(["*.pyx"]),
)
问题内容: 我想修改setup.py文件,以便命令“ python setup.py build”编译基于C的扩展模块,该模块静态(而非动态)链接到库。 该扩展程序当前动态链接到许多库。除了静态链接到一个库外,我想保留所有内容。我已经成功地通过手动修改了对distutils运行的gcc的调用来完成了此操作,尽管它要求我明确列出相关库。 也许这是太多信息,但是为了清楚起见,这是在“ python s
虽然我们到现在为止还没有写任何一行代码,但我们确实得到了一个完整的可运行的程序。要编译运行程序,可以选择Build-(或按快捷键F7),编译该程序。编译完后再选择Build-Execute Hello.exe(或按快捷键CTRL+F5),运行该程序。也可以直接按CTRL+F5,系统提示是否编译,回答“Yes”,Visual Studio将自动编译链接并运行Hello.exe程序。 提示:在Buil
推荐: http://www.ruanyifeng.com/blog/2014/11/compiler.html Bulid过程可以分解为4个步骤:预处理(Prepressing), 编译(Compilation)、汇编(Assembly)、链接(Linking) 以c语言为例: 1 预处理 预编译过程主要处理那些源文件中的以“#”开始的预编译指令,主要处理规则有: 将所有的“#define”删除
问题内容: 我有一个纯Python脚本,我想分发给具有未知Python配置的系统。因此,我想将Python代码编译为独立的可执行文件。 我奔波没有问题。那我跑 哪里给 并给 通过这种方式,我可以获得一个动态链接的可执行文件,该文件可以正常运行。产量 现在,我尝试将选项添加到gcc,但这会导致错误: 我检查了ldd给定的所有共享库是否也都安装为静态库。 那么,这与python3-config提供的选
问题内容: 现在,我已经在Windows 7上成功安装了Cython,我尝试使用Cython编译一些Cython代码,但是gcc使我的生活变得艰难。 使用gcc编译代码时,会抛出数十个 对 -erros的 未定义引用 ,并且我很确定src是可用的(如安装教程所述,如果缺少此文件,则会抛出 对 -errors的 未定义引用 )。 奇怪的是,使用*或-script可以很好地工作,但是当仍然在模块上工作
问题内容: 我正在尝试使用集成使用我的应用程序编写的第三方库。我已经为测试编写了所有的python代码。我很难找到设置此示例的方法。 我有一个手动创建的文件。第三方给了我a和a 。据我所知,没有其他依赖项。有人可以提供使用和进行设置的示例吗? 谢谢 问题答案: 当然可以! (在下文中,我假设你已经知道如何处理之间和交互和,如果这不是完全的情况下,只问我会开发部分以及) 示例(来自我的C ++项目,