Install shared objects into site-packages

Sean C. Farley scf at FreeBSD.org
Wed Mar 7 16:03:03 UTC 2012


On Fri, 24 Feb 2012, Li-Wen Hsu wrote:

> On Mon, Feb 20, 2012 at 11:42, Sean C. Farley <scf at freebsd.org> wrote:
>> I am using virtualenv --no-site-packages (the default now) to be able 
>> to build an environment on both FreeBSD and Linux.  The issue I am 
>> running into is that _sqlite3.so from databases/py-sqlite3 is being 
>> installed into site-packages as opposed to lib-dynload.  On the 
>> CentOS we are using, _sqlite3.so is installed in lib-dynload.
>>
>> I tried a bit to change the port's setup.py, but I have not been 
>> successful.  How can databases/py-sqlite3 and other ports that are 
>> typically part of Python by default be made to install into 
>> lib-dynload?
>>
>> These are the one that lang/python27 disables:
>> disabled_module_list = ["_bsddb", "_sqlite3", "_tkinter", "gdbm", "mpz"]
>
> Hi Sean,
>
> After reading databases/py-sqlite3/Makeilfe from NetBSD's pkgsrc, I 
> have this patch:
>
>    http://people.freebsd.org/~lwhsu/patch/py-sqlite3__lib-dynload.diff
>
> Due to time constraint, I haven't test it with virtualenv, please tell 
> me if it works.
>
> I think changing the install destination of these built-in modules to 
> the default position is right direction.  But this patch is not a good 
> solution, we need to handle PYDISTUTILS_INSTALLARGS better instead of 
> putting between bsd.port.{pre,post}.mk .  Please tell me if there is a 
> better way to do this.  Thanks.

It works.  Thank you!

I do not know a better way to do it.  I tried a few things with 
files/setup.py to get it to install within lib-dynload but was 
unsuccessful.  If an environment variable would take care of the 
install-lib option, then maybe putting something into MAKE_ENV?

Sean
-- 
scf at FreeBSD.org


More information about the freebsd-python mailing list