uwsgi on mac catalina (10.15).

Created on 27 Dec 2019  路  7Comments  路  Source: unbit/uwsgi

after upgrade to mac 10.15.2 (19C57). uwsgi fails. I reinstall using pip, but still no luck. There is no error msg, just do not work any more.

I wonder if uwsgi works on catalina or not. Thanks.

Most helpful comment

Turns out ldflags from python-config were also incorrect.

which python3 outside the virtualenv returns /usr/bin/python3, which is included with Catalina.

I ran brew install python3, recreated the virtualenv, then pip install uwsgi worked.

All 7 comments

I'm not sure if this is related, but I was unable to install uwsgi on OSX 10.15.3, the error was:

clang: error: no such file or directory: '<venv-dir>/lib/python3.7/config-3.7m/libpython3.7.a\'
*** error linking uWSGI ***

My temporary workaround is:

ln -s <venv-dir>/lib/python3.7/config-3.7m-darwin <venv-dir>/lib/python3.7/config-3.7m

thanks @sampullman. I migrate to use uwsgi in docker after hitting the wall too many times.

I have the same issue on Mac OS X Catalina:

(flask-hello) bash-3.2$ pip install uwsgi
Collecting uwsgi
  Using cached uwsgi-2.0.18.tar.gz (801 kB)
Building wheels for collected packages: uwsgi
...
...
...
    *** uWSGI linking ***
    clang -o /Users/richardc/.local/share/virtualenvs/flask-hello-BSeAq5-4/bin/uwsgi  core/utils.o core/protocol.o core/socket.o core/logging.o core/master.o core/master_utils.o core/emperor.o core/notify.o core/mule.o core/subscription.o core/stats.o core/sendfile.o core/async.o core/master_checks.o core/fifo.o core/offload.o core/io.o core/static.o core/websockets.o core/spooler.o core/snmp.o core/exceptions.o core/config.o core/setup_utils.o core/clock.o core/init.o core/buffer.o core/reader.o core/writer.o core/alarm.o core/cron.o core/hooks.o core/plugins.o core/lock.o core/cache.o core/daemons.o core/errors.o core/hash.o core/master_events.o core/chunked.o core/queue.o core/event.o core/signal.o core/strings.o core/progress.o core/timebomb.o core/ini.o core/fsmon.o core/mount.o core/metrics.o core/plugins_builder.o core/sharedarea.o core/rpc.o core/gateway.o core/loop.o core/cookie.o core/querystring.o core/rb_timers.o core/transformations.o core/uwsgi.o proto/base.o proto/uwsgi.o proto/http.o proto/fastcgi.o proto/scgi.o proto/puwsgi.o core/zlib.o core/yaml.o core/xmlconf.o core/dot_h.o core/config_py.o plugins/python/python_plugin.o plugins/python/pyutils.o plugins/python/pyloader.o plugins/python/wsgi_handlers.o plugins/python/wsgi_headers.o plugins/python/wsgi_subhandler.o plugins/python/web3_subhandler.o plugins/python/pump_subhandler.o plugins/python/gil.o plugins/python/uwsgi_pymodule.o plugins/python/profiler.o plugins/python/symimporter.o plugins/python/tracebacker.o plugins/python/raw.o plugins/gevent/gevent.o plugins/gevent/hooks.o plugins/ping/ping_plugin.o plugins/cache/cache.o plugins/nagios/nagios.o plugins/rrdtool/rrdtool.o plugins/carbon/carbon.o plugins/rpc/rpc_plugin.o plugins/corerouter/cr_common.o plugins/corerouter/cr_map.o plugins/corerouter/corerouter.o plugins/fastrouter/fastrouter.o plugins/http/http.o plugins/http/keepalive.o plugins/http/https.o plugins/http/spdy3.o plugins/signal/signal_plugin.o plugins/syslog/syslog_plugin.o plugins/rsyslog/rsyslog_plugin.o plugins/logsocket/logsocket_plugin.o plugins/router_uwsgi/router_uwsgi.o plugins/router_redirect/router_redirect.o plugins/router_basicauth/router_basicauth.o plugins/zergpool/zergpool.o plugins/redislog/redislog_plugin.o plugins/mongodblog/mongodblog_plugin.o plugins/router_rewrite/router_rewrite.o plugins/router_http/router_http.o plugins/logfile/logfile.o plugins/router_cache/router_cache.o plugins/rawrouter/rawrouter.o plugins/router_static/router_static.o plugins/sslrouter/sslrouter.o plugins/spooler/spooler_plugin.o plugins/cheaper_busyness/cheaper_busyness.o plugins/symcall/symcall_plugin.o plugins/transformation_tofile/tofile.o plugins/transformation_gzip/gzip.o plugins/transformation_chunked/chunked.o plugins/transformation_offload/offload.o plugins/router_memcached/router_memcached.o plugins/router_redis/router_redis.o plugins/router_hash/router_hash.o plugins/router_expires/expires.o plugins/router_metrics/plugin.o plugins/transformation_template/tt.o plugins/stats_pusher_socket/plugin.o -lpthread -lm -lz -lexpat -ldl -lSystem -framework CoreFoundation /Users/richardc/.local/share/virtualenvs/flask-hello-BSeAq5-4/lib/python3.7/config-3.7m/libpython3.7.a
    clang: error: no such file or directory: '/Users/richardc/.local/share/virtualenvs/flask-hello-BSeAq5-4/lib/python3.7/config-3.7m/libpython3.7.a'

/Users/richardc/.local/share/virtualenvs/flask-hello-BSeAq5-4/lib/python3.7/ exists but it does not contain config-3.7m/libpython3.7.a, only object file is readline.so.

I am out of my depth, but have the vague notion python-config can be used to find out how to link with libpython. This is what it tells me:

(flask-hello) bash-3.2$ python-config --ldflags
-L/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin -lpython3.7m -ldl -lSystem -framework CoreFoundation

Turns out ldflags from python-config were also incorrect.

which python3 outside the virtualenv returns /usr/bin/python3, which is included with Catalina.

I ran brew install python3, recreated the virtualenv, then pip install uwsgi worked.

Following this SO post finally helped me. The key was getting the path noted in the "Caveats" into my .bash_profile.

Ran in to this issue also - as noted by @joshua-davis-rose -
No need to brew install an additional copy of python3

This solved my problem:

export PATH=/usr/local/opt/python/libexec/bin:$PATH

I just recreated virtualenv and it helped

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ilrico picture ilrico  路  7Comments

dennylab picture dennylab  路  6Comments

yoichi picture yoichi  路  7Comments

PAStheLoD picture PAStheLoD  路  4Comments

Fiedzia picture Fiedzia  路  4Comments