标签: python-sip

在编译之前使用Python代码进行原型设计

我一直在考虑写一个峰值拟合库一段时间.我非常了解Python,并计划在Python中实现所有内容,但是设想我最终可能必须以编译语言重新实现一些核心例程.

IIRC,Python的原始版本之一是原型语言,但是Python在允许函数,仿函数,对象传递给函数和方法方面相当自由,而我怀疑C或Fortran也不是这样.

关于我设想的函数/类应该与编译语言接口,我应该知道些什么?这些潜在问题中有多少是由cTypes,bgen,SWIG,Boost.Python,CythonPython SIP等库来处理的?

对于这个特殊的用例,(拟合库)我想让用户将数学函数(Guassian,Lorentzian等)定义为Python函数,然后可以通过编译的代码拟合库来解释它.传递和返回数组也很重要.

python prototyping swig ctypes python-sip

21
推荐指数
3
解决办法
4520
查看次数

Mac上Python全局库的位置?

我正在与Mac OS X上安装SIP for Python作斗争.最后在编译和安装后我运行SIP(本地)的控制台表单文件夹时我可以导入sipconfig,但是当我在其他文件夹中时我不能 - 没有模块叫做sipconfig.

我的问题是 - 如果我想让它们全局可用(例如"import os"),我必须复制模块的文件夹在哪里,或者我如何检查它,因为位置"/Library/Python/2.6/site-packages /"不起作用.

python macos configuration python-sip

20
推荐指数
4
解决办法
7万
查看次数

如何检查库是否是在Mac OS X上构建的32位/ 64位?

我在使用PyQt/SIP时遇到了一些麻烦.我想SIP被编译成64位,但Python在找到它时遇到了一些问题.

  File "qtdemo.py", line 46, in 
    import sip
ImportError: dlopen(/Library/Python/2.6/site-packages/sip.so, 2): no suitable image found.  Did find:
        /Library/Python/2.6/site-packages/sip.so: mach-o, but wrong architecture
  • 我怎么知道库(so/dylib)是32位还是64位?
  • 我怎么知道我的Python是32位还是64位?

python macos 64-bit python-sip

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

在C或其他编译器语言之前学习Python是一个好主意吗?

现在我正在通过麻省理工学院的OpenCourseWare计算机科学课程的介绍.作为本课程的一部分,我正在学习Python语言.

我已经阅读了很多关于学习C的好处的事情.在我深入研究Python之前,我想知道我是否会因为首先学习Python而受到阻碍或帮助.

你认为我会从Python中养成任何坏习惯或类似的东西吗?

编辑:由于问题的主观性质,已更改为社区Wiki.

我很感谢第一个问题的所有重要答案.我真的被答案/评论的诚意所震撼.谢谢,很多人!

c python swig python-sip

12
推荐指数
4
解决办法
3万
查看次数

导入PyQt4.QtCore的钩子

我试图通过一个类似于这个问题的方法来设置一些导入钩子.为此,我需要定义两个函数,如上面的链接所述.这是我的功能,sys.meta_pathfind_moduleload_moduleload_module

import imp

def load_module(name, path):
    fp, pathname, description = imp.find_module(name, path)

    try:
        module = imp.load_module(name, fp, pathname, description)
    finally:
        if fp:
             fp.close()
    return module
Run Code Online (Sandbox Code Playgroud)

这适用于大多数模块,但PyQt4.QtCore在使用Python 2.7时失败:

name = "QtCore"
path = ['/usr/lib64/python2.7/site-packages/PyQt4']

mod = load_module(name, path)
Run Code Online (Sandbox Code Playgroud)

返回,

Traceback (most recent call last):
   File "test.py", line 19, in <module>
   mod = load_module(name, path)
   File "test.py", line 13, in load_module
   module = imp.load_module(name, fp, pathname, description)
SystemError: dynamic module not initialized …
Run Code Online (Sandbox Code Playgroud)

python pyqt python-2.7 python-sip

10
推荐指数
1
解决办法
453
查看次数

Python-C集成:Ctypes,CFFI或创建二进制模块

基本上我想用C编写的Python程序调用函数.

所以(据我所知)我的选择是:

  • CTypes/CFFI
    • 创建包含C函数的DLL/SO/DyLib,并使用CTypes或CFFI访问它们.显然CFFI更快,唯一的缺点是必须在python中声明所有函数签名.
    • 优点:
      • 不必在我的C函数中进行任何调整.所有类型转换都是在Python中完成的.
    • 缺点:
      • 表现?
  • Python二进制模块
    • 在C中编写一个python接口,将我的C模块转换为二进制python模块
    • 优点:
      • 表现?
    • 缺点:
      • 所有类型转换都在C语言中完成.使用[SIP] [3]这可能是自动化的.

将C模块转换为python二进制模块真的更快吗?

两个解决方案是否都支持向C函数发送python回调?

SIP是生成python接口的好选择吗?还有其他选择吗?

其中任何一个都有其他特殊性吗?

c python python-c-extension python-sip python-cffi

7
推荐指数
1
解决办法
3762
查看次数

如何在Windows 7上安装SIP和PyQT

我是Python环境的新手,并且真的很难在我的Win 7机器上安装SIP和PyQt.

这是我到目前为止所做的,

  1. 我已经下载了SIP-4.16.9并从zip文件夹中提取了文件
  2. 然后将解压缩的文件夹复制到C:\ Python34\Lib
  3. 启动命令提示符(cmd)并将路径更改为C:\ Python34\Lib
  4. 然后,当我进入python configure.pyC:\ Python34\Lib文件和我得到的回应如下

在此输入图像描述

  1. 在这个阶段,我不知道它是否已成功安装,验证我找了SIP.hC:\Python34\Include(根据上面的响应-红色),但我不能找到任何这样的头文件,所以我想安装具有不成功了.

任何人都可以帮助我,我在这里失踪了什么?

附加系统信息:

  • Windows 7 64位
  • Python 3.4
  • 环境变量(路径:C:\ Python34; C:\ Python34\Lib; C:\ Python34\Lib\site-packages)

注意:以前发过几个问题,但到目前为止它们都没有帮助,我相信我一定会错过一些愚蠢的东西.

谢谢你的时间.

python python-sip

7
推荐指数
2
解决办法
4万
查看次数

用于C++运算符重载的Python绑定

我有一个类似于以下的类:

class A {
    vector<double> v;
    double& x(int i) { return v[2*i]; }
    double& y(int i) { return v[2*i+1]; }
    double x(int i) const { return v[2*i]; }
    double y(int i) const { return v[2*i+1]; }
}
Run Code Online (Sandbox Code Playgroud)

我想让以下Python代码工作:

a = A()
a.x[0] = 4
print a.x[0]
Run Code Online (Sandbox Code Playgroud)

我在想的__setattr____getattr__,但如果它的工作原理不清楚.另一种方法是实现以下Python:

a = A()
a['x', 0] = 4
print a['x', 0]
Run Code Online (Sandbox Code Playgroud)

不如前一个好,但可能更容易实现(用__slice__?).

PS.我正在使用sip进行绑定.

谢谢.

c++ python reference python-sip

6
推荐指数
1
解决办法
1262
查看次数

在PyQt安装期间检查SIP版本不正确

我一直在尝试在我的mac(OSX 10.6.8)上安装PyQt,但我仍然遇到这个问题:

当我尝试安装PyQt-mac-gpl-4.9.6时,我明白了

Error: This version of PyQt requires SIP v4.14.2 or later.
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我想在控制台上检查sip版本并写入时

sip -V
Run Code Online (Sandbox Code Playgroud)

,我得到了正确的版本:4.14.2

我已经查看了我的路径,但没有找到我发现的在线提示帮助了我.我该如何解决?

macos osx-leopard pyqt python-sip

6
推荐指数
1
解决办法
8723
查看次数

我可以使用SIP为我​​的Qt C++库生成Python绑定,然后在PySide中调用它吗?

由于许可证,我必须选择PySide.但它的Shiboken工具缺乏文档.我无法成功为我的Qt C++库生成绑定.

看起来SIP至少在文档部分更成熟.我可以使用SIP生成绑定,然后在PySide上运行我的python代码来调用绑定吗?我的用户环境是Windows XP + Python 2.7 + PySide 1.1.2(基于Window安装程序,安装到C:\ Python27\Lib\site-packages\PySide).

c++ python qt pyside python-sip

6
推荐指数
0
解决办法
360
查看次数