| brent timothy saner via plug on 16 May 2020 10:48:08 -0700 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: [PLUG] Fixing a Python library mismatch |
On 5/16/20 07:59, Walt Mankowski via plug wrote:
> On Fri, May 15, 2020 at 09:26:30PM -0400, brent timothy saner via plug wrote:
>> three ways to fix:
>>
>> ONE: the proper, stable way
>>
>> use numpy and python 3 from the ubuntu repositories. this ensures the
>> modules and system libraries are always in sync (unless a packager
>> somewhere made an oopsie).
>
> Sure, but of course I want to have the latest and greatest packages,
> and also follow new Python versions. :)
hrm. a compromise on this might be using a PPA such as
https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa for python and pip
(if you prefer venvs).
>
>> TWO A: the "i don't like the proper, stable way" way
>> a.k.a. the "i know better than the distro packagers" way
>>
>> just recreate your env. i'd recommend using venv rather than pyenv,
>> though, since it's stdlib in python3.3+
>> (https://docs.python.org/3/library/venv.html). since it looks like
>> you're using python3.8, and assuming it's installed system-wide,
>>
>> python3.8 -m venv some_venv_dir
>
> Thanks, I'll take a look at venv. I have a hunch this is a more of a
> problem with pip though. See below.
yep! i bring it up because the pyvenv script was deprecated in 3.6:
https://docs.python.org/dev/whatsnew/3.6.html#deprecated-python-modules-functions-and-methods
as noted in your second reply, though, interestingly noted is two
deprecations below in that very link is the --with-system-ffi build flag
deprecation as 3.6 onwards it's the default if you're building python
from source, and they force using the system libffi for 3.7 onwards.
technically a coincidence, but worth noting since it's marginally relevant.
>
>> TWO B: the "fuck that" way
>>
>> uninstall numpy from your pyenv and reinstall it. as long as it doesn't
>> keep a build cache, it should build from whatever libffi is available.
>
> I've already tried that numerous times. Also tried
>
> $ pip cache purge
> $ pip install numpy --no-cache-dir
>
> but I'm still having the same problem.
yeah, as found in your later reply it looks like it was within python
itself. i figured it would have been numpy since it's a sizable module,
but alas.
>
>> THREE: the honeybadger way
>> a.k.a. the yolo way
>>
>> this is a hack, but it works 9 times out of 10.
>>
>> just symlink the lib.
>>
>> cd /usr/lib64[0]
>> ln -s libffi.so[1] libffi.so.6
>
> Noted, but this seems like the sort of thing that is likely to happen
> again and I'd like to know how to properly fix it.
>
> The reason I suspect pip is that then I install big packages in Perl
> it takes several minutes to compile the code and run all the
> tests. But when I install packages with pip they all install in a few
> seconds. This leads me to believe it's downloading a pre-compiled
> version of numpy.
>
yeah, pip has something called wheels in newer python releases:
https://pip.pypa.io/en/stable/reference/pip_wheel/
https://pythonwheels.com/
not all packages have (or can have) wheels (for instance, the
python-ldap module can't use wheels because it needs to use the system
openldap libs/headers), but they definitely speed up the install process
since they don't require compilation.
you can tell if a module does a wheel install or not by going to its
pypi "Downlod files" page and looking for a wheel there.
e.g. https://pypi.org/project/python-ldap/#files has no wheel files,
https://pypi.org/project/numpy/#files does ("*.whl").
you can explicitly disable the use of wheels in pip via the following:
pip < 10.x:
<pip install> --no-use-wheel <package>
pip >= 10.x:
<pip install> --no-binary <package>
Attachment:
signature.asc
Description: OpenPGP digital signature
___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug