I’m using pantsbuild to create a pex with SQLAlchemy==1.3.11 and 
mysqlclient==1.4.6. I’m going to run the pex on ubuntu 14 trusty and ubuntu 18 
bionic.

To first build the wheel, I went to each ubuntu machine and ran this:

pip wheel —no-cache-dir —wheel-dir=./ mysqlclient==1.4.6

On the trusty machine, it created 
https://s3.amazonaws.com/aiq-public/ubuntu14/index.html. However on the bionic 
machine it created https://s3.amazonaws.com/aiq-public/ubuntu18/index.html.

I was very confused, but I just kept the “none” wheel since that should be OS 
independent. I built the pex locally on each box, and it worked fine on trusty, 
however on bionic I saw this error:

  File 
"/home/ubuntu/.pex/install/SQLAlchemy-1.0.11-cp27-none-linux_x86_64.whl.2ad4de6e38cfa6e6073ca829b9a827ab4c9a46d8/SQLAlchemy-1.0.11-cp27-none-linux_x86_64.whl/sqlalchemy/engine/strategies.py",
 line 75, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File 
"/home/ubuntu/.pex/install/SQLAlchemy-1.0.11-cp27-none-linux_x86_64.whl.2ad4de6e38cfa6e6073ca829b9a827ab4c9a46d8/SQLAlchemy-1.0.11-cp27-none-linux_x86_64.whl/sqlalchemy/dialects/mysql/mysqldb.py",
 line 92, in dbapi

return __import__('MySQLdb')
  File 
"/home/ubuntu/.pex/install//mysqlclient-1.4.6-cp27-none-linux_x86_64.whl/MySQLdb/__init__.py",
 line 19, in <module>

import _mysql
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file 
or directory

That seemed very strange to me, so then I changed the bionic build to point to 
the os-specific wheel, and then it started working.

Is there some reason the “none” wheel does not work on bionic? Somehow it 
seemed to be picking up the wrong libmysqlclient library? Note I have 
“libmysqlclient.so” installed on both trusty (mysql 5.6) and bionic (mysql 
5.7). They are different versions, but I didn’t think it mattered, if using a 
“none” wheel then it should build on the box using whatever libraries the OS 
has, right?

Thanks.
—
Mitesh
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to