Errors while installing python autopy

杀马特。学长 韩版系。学妹 提交于 2019-12-09 16:11:30

问题


Hey I have looked at and old question here but it doesn't answer my question

I have installed libpng, then try to install autopy and get complie errors.

I am not great at python yet so I am not sure on how to fix them.

Ashley:~ ashleyhughes$ sudo easy_install autopy
Searching for autopy
Reading http://pypi.python.org/simple/autopy/
Reading http://www.autopy.org
Best match: autopy 0.51
Downloading http://pypi.python.org/packages/source/a/autopy/autopy-0.51.tar.gz#md5=b92055aa2a3712a9c3b4c874014b450e
Processing autopy-0.51.tar.gz
Running autopy-0.51/setup.py -q bdist_egg --dist-dir /tmp/easy_install-U9uWoj/autopy-0.51/egg-dist-tmp-hdjtIx
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang: warning: argument unused during compilation: '-mno-fused-madd'
clang: warning: argument unused during compilation: '-mno-fused-madd'
src/screengrab.c:48:26: warning: implicit declaration of function
      'CGDisplayBitsPerPixel' is invalid in C99
      [-Wimplicit-function-declaration]
        bitsPerPixel = (uint8_t)CGDisplayBitsPerPixel(displayID);
                                ^
src/screengrab.c:191:2: warning: 'CGLSetFullScreen' is deprecated
      [-Wdeprecated-declarations]
        CGLSetFullScreen(glContext);
        ^
src/screengrab.c:194:2: warning: implicit declaration of function 'glReadBuffer'
      is invalid in C99 [-Wimplicit-function-declaration]
        glReadBuffer(GL_FRONT);
        ^
src/screengrab.c:194:15: error: use of undeclared identifier 'GL_FRONT'
        glReadBuffer(GL_FRONT);
                     ^
src/screengrab.c:197:2: warning: implicit declaration of function 'glFinish' is
      invalid in C99 [-Wimplicit-function-declaration]
        glFinish();
        ^
src/screengrab.c:199:6: warning: implicit declaration of function 'glGetError'
      is invalid in C99 [-Wimplicit-function-declaration]
        if (glGetError() != GL_NO_ERROR) return NULL;
            ^
src/screengrab.c:199:22: error: use of undeclared identifier 'GL_NO_ERROR'
        if (glGetError() != GL_NO_ERROR) return NULL;
                            ^
src/screengrab.c:207:2: warning: implicit declaration of function
      'glPopClientAttrib' is invalid in C99 [-Wimplicit-function-declaration]
        glPopClientAttrib(); /* Clear attributes previously set. */
        ^
src/screengrab.c:223:2: warning: implicit declaration of function
      'glPushClientAttrib' is invalid in C99 [-Wimplicit-function-declaration]
        glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
        ^
src/screengrab.c:223:21: error: use of undeclared identifier
      'GL_CLIENT_PIXEL_STORE_BIT'
        glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
                           ^
src/screengrab.c:225:2: warning: implicit declaration of function
      'glPixelStorei' is invalid in C99 [-Wimplicit-function-declaration]
        glPixelStorei(GL_PACK_ALIGNMENT, BYTE_ALIGN); /* Force alignment. */
        ^
src/screengrab.c:225:16: error: use of undeclared identifier 'GL_PACK_ALIGNMENT'
        glPixelStorei(GL_PACK_ALIGNMENT, BYTE_ALIGN); /* Force alignment. */
                      ^
src/screengrab.c:226:16: error: use of undeclared identifier
      'GL_PACK_ROW_LENGTH'
        glPixelStorei(GL_PACK_ROW_LENGTH, 0);
                      ^
src/screengrab.c:227:16: error: use of undeclared identifier 'GL_PACK_SKIP_ROWS'
        glPixelStorei(GL_PACK_SKIP_ROWS, 0);
                      ^
src/screengrab.c:228:16: error: use of undeclared identifier
      'GL_PACK_SKIP_PIXELS'
        glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
                      ^
src/screengrab.c:235:2: warning: implicit declaration of function 'glReadPixels'
      is invalid in C99 [-Wimplicit-function-declaration]
        glReadPixels(x, y, width, height,
        ^
src/screengrab.c:236:30: error: use of undeclared identifier 'GL_BGRA'
                     MMRGB_IS_BGR ? GL_BGRA : GL_RGBA,
                                    ^
src/screengrab.c:236:40: error: use of undeclared identifier 'GL_RGBA'
                     MMRGB_IS_BGR ? GL_BGRA : GL_RGBA,
                                              ^
9 warnings and 9 errors generated.
error: Setup script exited with error: command 'clang' failed with exit status 1

Can anyone help. I need autopy as it works on multiple platforms

I used ethan.tira-thompson.com/Mac_OS_X_Ports.html to install libpng

Have xcode installed with command line tools as well


回答1:


I had the same problem, if you notice all 9 errors are coming from one file: src/screengrab.c This file has not been updated to the latest version of OpenGL and there are deprecated methods. On the autopy github repo there is a bug reported for this here. The fix/hack suggested there is to add the line: #include <OpenGL/gl.h>

after line 7 in src/screengrab.c. You are going to have to get the source from Github and alter it locally rather than using easy_install.
Note this is a hack that will get it to compile but the screen grabs will be all black. Someone needs to spend a few minutes rewriting screengrab.c with up to date methods.




回答2:


When I added

#include <OpenGL/gl.h>

It did not compile.

So, I took a look though my hard disk, looking for each gl.h

So, I tried

    #include "/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/gl.h"

Then I managed to compile it :-)




回答3:


If you have tried this:

$ sudo easy_install autopy

Another option is to compile from the latest source on the GitHub repository:

$ git clone git://github.com/msanders/autopy.git

$ cd autopy

$ python setup.py build

$ python setup.py install

When building from source, make sure to cd out of the autopy directory before attempting to use AutoPy or else it may fail on an ImportError due to Python's relative imports.



来源:https://stackoverflow.com/questions/12993126/errors-while-installing-python-autopy

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!