我可以安装C/C++;Python virtualenv中的库共享对象? 我使用C++库,它可以用SWIG构建为Python模块。p> < p>模块的建立结果是C++共享对象,调用它“代码> LBFoO。所以,Python模块,它既包含Python文件,也包括代码> Fo.Py < /C>,以及一些共享对象,它被Python用来与 LBFoO接口。所以,被称为 现在我可以在代码> > SUDO使安装< /代码> C++库和Python模块,如果加载Python和Do代码>导入FoO < /C> >,一切都很好。

我可以安装C/C++;Python virtualenv中的库共享对象? 我使用C++库,它可以用SWIG构建为Python模块。p> < p>模块的建立结果是C++共享对象,调用它“代码> LBFoO。所以,Python模块,它既包含Python文件,也包括代码> Fo.Py < /C>,以及一些共享对象,它被Python用来与 LBFoO接口。所以,被称为 现在我可以在代码> > SUDO使安装< /代码> C++库和Python模块,如果加载Python和Do代码>导入FoO < /C> >,一切都很好。,python,c++,python-2.7,virtualenv,swig,Python,C++,Python 2.7,Virtualenv,Swig,如果我 SUDO安装Cuth[/Cuff] C++库,然后将Python模块安装到VielalEnV(通过调整Mag文件,使其使用Python的VielalEnv版本运行 Stuts.py./Cuth>),一切也都有效。如果我从VYV运行Python,我可以导入FO,并且C++库被正确加载。在venv之外,我不能导入Foo 现在,我可以构建并安装C++库,使它安装到 VeV/LIB < /C>中。然后,我可以正确构建Python包并将其安装到virtualenv中。如果我运行Python的vir

如果我<代码> SUDO安装Cuth[/Cuff] C++库,然后将Python模块安装到VielalEnV(通过调整Mag文件,使其使用Python的VielalEnv版本运行<代码> Stuts.py./Cuth>),一切也都有效。如果我从VYV运行Python,我可以导入FO,并且C++库被正确加载。在venv之外,我不能导入Foo

现在,我可以构建并安装C++库,使它安装到 VeV/LIB < /C>中。然后,我可以正确构建Python包并将其安装到virtualenv中。如果我运行Python的virtualenv版本,导入Foo会因为缺少符号而失败,这似乎意味着它找到了
Foo.py
\u Foo.so
,而不是
libFoo.so

如果我这样做

LD_PRELOAD=venv/lib/libFoo.so python
导入成功,库正常工作。(请注意,在本例中,目录
venv/lib
似乎没有任何特殊之处。我也可以将库安装在完全不同的位置,并传入该文件名。)

但是,当尝试加载那个库时,我不能让Python在C++共享对象的文件夹VVI/LIB中查找。设置<代码> LD.LabyLogiPosith似乎没有改变任何东西,我相信因为Python的VialalEnV版本要么忽略这个变量,要么因为Python模块本身中的设置决定了C++对象应该如何加载。

有没有正确安装C++或C库到VirtualEnv的方法,以便在虚拟环境中运行的Python代码正确加载它?或者这仅仅是VirtualNVS设计时不想做的事情


(我不认为这个问题的机制依赖于SWIG,但如果SWIG有任何含义,或者如果有专门与SWIG相关的技术可以解决我的问题,那就很高兴知道了。)

使用
sudo make DESTDIR=/your/virtualenv install
而不是调整make文件怎么样?@MathiasEttinger我认为这会起作用,但它不能解决我的问题。让virtualenv决定它想在哪里安装东西似乎更有意义。