小编J.J*_*ala的帖子

如何使用python wheel包包含外部库

我想创建python包,.so在Linux上使用cffi模块嵌入和使用外部库().

有没有标准的方法将.so文件包含到python包中?

该软件包仅在内部使用,不会发布到pypi.

我认为Wheel包是最好的选择 - 他们会创建特定于平台的包,所有文件都可以复制,因此不需要在目标环境中构建任何东西.

python shared-libraries python-cffi python-wheel

20
推荐指数
2
解决办法
5385
查看次数

Genymotion VirtualBox错误

我在我的电脑上安装了Genymotion和VirtualBox,并通过Genymotion设置了三星Galaxy S6设备.但是,当我尝试启动设备时,Genymotion给了我这个错误:

无法启动虚拟设备

VirtualBox无法启动虚拟设备

要找出问题的原因,请从VirtualBox启动虚拟设备.

有关更多信息,请检查日志文件.请参阅:www.genymotion.com/faq/logs

我尝试在VirtualBox中启动设备,并收到此错误: Virtualbox Error

无法打开虚拟机Samsung Galaxy S6 - 6.0.0 - API 23 - 1440x2560的会话

▼详情

找不到配置的驱动程序.未加载必要的驱动程序模块,名称拼写错误,或者配置错误.(VERR_PDM_DRIVER_NOT_FOUND).

结果代码:E_FAIL(0X80004005)成分:ConsoleWrap接口:IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

我试图删除网络驱动程序并让Genymotion重新安装它们.我还检查了网络接口(驱动程序)的所有驱动程序,但似乎没有任何帮助.我该怎么办?

android virtualbox genymotion

17
推荐指数
1
解决办法
6754
查看次数

我可以明确关闭ctypes CDLL吗?

我有一个Python 2.7 GUI用于与C库交互.我在GUI中做了一堆设置,然后按"go"按钮.然后,我正在查看结果,不再需要库代码.但我想在更改库时保持所有GUI状态.

我导入sodll使用ctypes,显然打开文件进行阅读.但是,我想显式关闭该文件,以便重新编译并覆盖它.然后,当我再次按下"go"按钮时,我想导入新版本.

在最糟糕的情况下,我可以将文件复制到一个tempfile.NamedTemporaryFile,但后来我有几十个文件的句柄,没有一个我可以清理.

我可以以某种方式显式关闭文件句柄吗?或者,我可以将文件的内容读入StringIO对象并以某种方式指向该对象ctypes吗?

python ctypes

11
推荐指数
1
解决办法
4499
查看次数

如何安装cairocffi?

如何安装cairocffipip

cairocffi是一个基于CFFI降的替代产品Pycairo https://github.com/SimonSapin/cairocffi.

我正在尝试在Ubuntu 14.04上安装它:

alvas@ubi:~$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"
NAME="Ubuntu"
VERSION="14.04.2 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.2 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
Run Code Online (Sandbox Code Playgroud)

我尝试使用标准pip命令进行安装,但我得到了这个:

$ sudo pip install cairocffi
The directory '/home/alvas/.cache/pip/log' or its parent directory is not owned by the current user and the debug log has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's …
Run Code Online (Sandbox Code Playgroud)

python install pip cairo python-cffi

11
推荐指数
3
解决办法
2万
查看次数

为什么这些语句在JavaScript中的工作方式不同?

我最近检查了甜蜜的小代码,使用XOR函数交换两个变量.我为此使用了JavaScript.

设x和y为两个变量并让x = 4, y = 6.

x = x ^ y; y = y ^ x; x = x ^ y;

它可以很好地交换变量.请注意,我保持xy不同,以防止可由于首先发生混淆XOR.

然后,观察声明,我写道: x = x ^ (y = y ^ (x = x ^ y )); 这交换变量y正确,但x总是0.

而且,x ^= y ^= x ^= y;似乎也是等效表达式产生与第二种情况相同的不正确结果.

但是,所有这些语句都在Java上等效运行,并且始终如一地生成相同的结果.

我还使用JavaScript的严格模式.

这三个陈述在某种程度上不等同于JavaScript或我错过了一些关键的东西吗?

javascript xor

11
推荐指数
1
解决办法
154
查看次数

无法安装"Cairocffi"

我正在使用python3,我正在尝试在Ubuntu上安装" cairocffi ".为此,我已成功安装:

  1. 蟒蛇-dev的
  2. libffi-dev的
  3. CFFI

但是当我试图安装"cairocffi"时pip install cairocffi,我得到了:

      File "/usr/local/lib/python3.2/dist-packages/setuptools/dist.py", line 272
, in __init__
        _Distribution.__init__(self,attrs)
      File "/usr/lib/python3.2/distutils/dist.py", line 261, in __init__
        self.finalize_options()
      File "/usr/local/lib/python3.2/dist-packages/setuptools/dist.py", line 327
, in finalize_options
        ep.load()(self, ep.name, value)
      File "/usr/local/lib/python3.2/dist-packages/cffi/setuptools_ext.py", line
 161, in cffi_modules
        add_cffi_module(dist, cffi_module)
      File "/usr/local/lib/python3.2/dist-packages/cffi/setuptools_ext.py", line
 48, in add_cffi_module
        execfile(build_file_name, mod_vars)
      File "/usr/local/lib/python3.2/dist-packages/cffi/setuptools_ext.py", line
 24, in execfile
        exec(code, glob, glob)
      File "cairocffi/ffi_build.py", line 30, in <module>
        ffi.cdef(constants._CAIRO_HEADERS)
    AttributeError: 'module' object has no attribute '_CAIRO_HEADERS'

    ----------------------------------------
    Command "python setup.py egg_info" …
Run Code Online (Sandbox Code Playgroud)

python install pip cairo python-cffi

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

Python:使用ctypes访问DLL函数 - 按函数*name*访问失败

myPythonClient(下面)想要调用一个ringBell函数(使用DLL加载ctypes).但是,尝试ringBell通过其名称访问会导致AttributeError.为什么?

RingBell.h 包含

namespace MyNamespace
    {
    class MyClass
        {
        public:
            static __declspec(dllexport) int ringBell ( void ) ;
        } ;
    }
Run Code Online (Sandbox Code Playgroud)

RingBell.cpp 包含

#include <iostream>
#include "RingBell.h"
namespace MyNamespace
    {
    int __cdecl MyClass::ringBell ( void )
        {
        std::cout << "\a" ;
        return 0 ;
        }
    }
Run Code Online (Sandbox Code Playgroud)

myPythonClient.py 包含

from ctypes import *
cdll.RingBell[1]() # this invocation works fine
cdll.RingBell.ringBell() # however, this invocation errors out
# AttributeError: function 'ringBell' …
Run Code Online (Sandbox Code Playgroud)

python dll ctypes attributeerror

8
推荐指数
3
解决办法
2万
查看次数

将C++双重返回Python?

所以我使用python来调用共享C++库中的方法.我有一个问题,从C++返回到Python的双重问题.我有一个创建了一个展示问题的玩具示例.随意编译并试用.

这是python代码(soexample.py):

# Python imports
from ctypes import CDLL
import numpy as np

# Open shared CPP library:
cpplib=CDLL('./libsoexample.so')
cppobj = cpplib.CPPClass_py()

# Stuck on converting to short**?
x = cpplib.func_py(cppobj)
print 'x =', x
Run Code Online (Sandbox Code Playgroud)

这是C++(soexample.cpp):

#include <iostream>

using namespace std;

class CPPClass
{
  public:
  CPPClass(){}

  void func(double& x)
  {
    x = 1.0;
  }
};

// For use with python:
extern "C" {
    CPPClass* CPPClass_py(){ return new CPPClass(); }
    double func_py(CPPClass* myClass)
    {      
      double x;  
      myClass->func(x);
      return x;    
    }
} …
Run Code Online (Sandbox Code Playgroud)

c++ python double ctypes shared-libraries

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

如何在python中捕获异常(在C++中引起)

我想在我的C++应用程序中嵌入python.我不使用Boost库.

如果C++函数抛出异常,我想抓住它并在我的应用程序中打印错误或获取一些详细信息,如python脚本中的行号导致错误.

我该怎么做?我找不到任何函数来获取Python API或C++中的详细异常信息.

void sum(int iA, int iB)
{
    throw iA + iB;
}

from ctypes import * 

mydll = WinDLL("C:\\Users\\cppwrapper.dll")

try:
    mydll.sum(2,3)
catch:
    print "exception occured"
Run Code Online (Sandbox Code Playgroud)

但它不起作用.请帮我解决这个问题.提前致谢.

c++ python ctypes

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