问题
Have anyone managed to install uwsgi on cygwin (python 2.7) ?
{ uwsgi-2.0.11.2 } » python setup.py install
running install
using profile: buildconf/default.ini
detected include path: ['/usr/lib/gcc/i686-pc-cygwin/4.9.2/include', '/usr/lib/gcc/i686-pc-cygwin/4.9.2/include-fixed', '/usr/include', '/usr/lib/gcc/i686-pc-cygwin/4.9.2/../../../../include/w32api']
Patching "bin_name" to properly install_scripts dir
detected CPU cores: 1
configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_ZLIB -DUWSGI_LOCK_USE_WINDOWS_MUTEX -DUWSGI_EVENT_USE_POLL -DUWSGI_EVENT_TIMER_USE_NONE -DUWSGI_EVENT_FILEMONITOR_USE_NONE -DUWSGI_UUID -DUWSGI_VERSION="\"2.0.11.2\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="11" -DUWSGI_VERSION_REVISION="2" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_SSL -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"
*** uWSGI compiling server core ***
[gcc] core/utils.o
core/utils.c: In function ‘uwsgi_as_root’:
core/utils.c:848:4: error: implicit declaration of function ‘initgroups’ [-Werror=implicit-function-declaration]
if (initgroups(uidname, uwsgi.gid)) {
^
cc1: all warnings being treated as errors
I have got make, automake , gcc (4.9.2) . Do I need anything else ?
回答1:
I ran into the exact same issue under Windows 7, gcc (GCC) 4.9.3
and GNU Make 4.1
. There actually 3 issues that needed to be resolved. The first being to disable the GCC warnings by removing the -Wall
flag. The second is to remove the GCC -rdynamic
linker option when using Cygwin. The last issue is that you need to install libcrypt-devel
using Cygwin's setup installer.
Here is is what my git diff uwsgiconfig.py
looks like. Note that I cloned the master
branch from GitHub.
diff --git a/uwsgiconfig.py b/uwsgiconfig.py
index 3279777..cca00cf 100644
--- a/uwsgiconfig.py
+++ b/uwsgiconfig.py
@@ -1,5 +1,6 @@
# uWSGI build system
+
uwsgi_version = '2.1-dev'
import os
@@ -621,7 +622,7 @@ class uConf(object):
self.cflags = [
'-O2',
'-I.',
- '-Wall',
+ # '-Wall',
'-Werror',
'-D_LARGEFILE_SOURCE',
'-D_FILE_OFFSET_BITS=64'
@@ -842,6 +843,9 @@ class uConf(object):
if GCC in ('clang',):
self.libs.remove('-rdynamic')
+ if uwsgi_os.startswith('CYGWIN'):
+ self.libs.remove('-rdynamic')
+
# compile extras
extras = self.get('extras', None)
if extras:
Then a simple make
within the cloned uwsgi directory should build everything.
I tested it by creating a file called app.py
with the following -
def application(env, start_response):
start_response('200 OK', [('content-type', 'text/html')])
return [b'asdasdasd']
Then run the server with -
./uwsgi --http :9090 --wsgi-file app.py
Everything worked fine when I accessed http://localhost:9090/.
回答2:
I am successed with only using latest uwsgi and latest Cygwin. The core is step 2
step:
- dowload Cygwin
- install: when you install, you must choose to install pip and python (my is python2.7.16) ==> this is python for Cygwin, not the python installed on Windows and use in Cygwin shell(REF TO)
- dowload uwsgi
- install
cd {YOUR uwsgi}; python2.7.exe setup install
(python2.7.exe
is that created by python for Cygwin that you choose in step2, your may diff, find at/bin/pythonX.x.exe
, add it toPATH
just like in linux(/etc/profile
or~/.bash_profile
)) - if error in step 4 occurred, like 'xxx/ld not found -lintl`, go to step2 find it(usually xxx-devel) and install
- use
uwsig
:python and most cmd in Cygwin
can only run at Cygwin console(else access denial), but you can use uwsgi, add it to yourWINDOWS PATH
, and install package like django in at Cygwin console.
来源:https://stackoverflow.com/questions/33012225/installing-uwsgi-on-cygwin