How to link openCv with Python3 in mac Os












1















I have two versions of python in my mac os, the first python2.7 which is the default that came with the system. Later I installed python3.7 that I use most of the time.



I have recently installed openCV using homebrew.
When I'm using openCV with python2.7, it's working normally.



But the problem is when I try to use it with python3. Importing cv2 in python3 gives error: ModuleNotFoundError: No module named 'cv2'



Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current
information.

>>> import cv2
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
>>>


Is there anything I can do so that I can link the installed openCV with python3 ??



Thanks for the help










share|improve this question























  • If you build/install python after OpenCV, you mostly need to rebuild OpenCV for it to link with your new Python. If you install both of them with homebrew, you can reinstall OpenCV with option --with-python3 (I think). However, I would build OpenCV from source on MacOS using CMake.

    – Quang Hoang
    Dec 21 '18 at 22:04
















1















I have two versions of python in my mac os, the first python2.7 which is the default that came with the system. Later I installed python3.7 that I use most of the time.



I have recently installed openCV using homebrew.
When I'm using openCV with python2.7, it's working normally.



But the problem is when I try to use it with python3. Importing cv2 in python3 gives error: ModuleNotFoundError: No module named 'cv2'



Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current
information.

>>> import cv2
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
>>>


Is there anything I can do so that I can link the installed openCV with python3 ??



Thanks for the help










share|improve this question























  • If you build/install python after OpenCV, you mostly need to rebuild OpenCV for it to link with your new Python. If you install both of them with homebrew, you can reinstall OpenCV with option --with-python3 (I think). However, I would build OpenCV from source on MacOS using CMake.

    – Quang Hoang
    Dec 21 '18 at 22:04














1












1








1








I have two versions of python in my mac os, the first python2.7 which is the default that came with the system. Later I installed python3.7 that I use most of the time.



I have recently installed openCV using homebrew.
When I'm using openCV with python2.7, it's working normally.



But the problem is when I try to use it with python3. Importing cv2 in python3 gives error: ModuleNotFoundError: No module named 'cv2'



Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current
information.

>>> import cv2
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
>>>


Is there anything I can do so that I can link the installed openCV with python3 ??



Thanks for the help










share|improve this question














I have two versions of python in my mac os, the first python2.7 which is the default that came with the system. Later I installed python3.7 that I use most of the time.



I have recently installed openCV using homebrew.
When I'm using openCV with python2.7, it's working normally.



But the problem is when I try to use it with python3. Importing cv2 in python3 gives error: ModuleNotFoundError: No module named 'cv2'



Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current
information.

>>> import cv2
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
>>>


Is there anything I can do so that I can link the installed openCV with python3 ??



Thanks for the help







python-3.x macos opencv homebrew






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 21 '18 at 14:17









Matrix11Matrix11

886




886













  • If you build/install python after OpenCV, you mostly need to rebuild OpenCV for it to link with your new Python. If you install both of them with homebrew, you can reinstall OpenCV with option --with-python3 (I think). However, I would build OpenCV from source on MacOS using CMake.

    – Quang Hoang
    Dec 21 '18 at 22:04



















  • If you build/install python after OpenCV, you mostly need to rebuild OpenCV for it to link with your new Python. If you install both of them with homebrew, you can reinstall OpenCV with option --with-python3 (I think). However, I would build OpenCV from source on MacOS using CMake.

    – Quang Hoang
    Dec 21 '18 at 22:04

















If you build/install python after OpenCV, you mostly need to rebuild OpenCV for it to link with your new Python. If you install both of them with homebrew, you can reinstall OpenCV with option --with-python3 (I think). However, I would build OpenCV from source on MacOS using CMake.

– Quang Hoang
Dec 21 '18 at 22:04





If you build/install python after OpenCV, you mostly need to rebuild OpenCV for it to link with your new Python. If you install both of them with homebrew, you can reinstall OpenCV with option --with-python3 (I think). However, I would build OpenCV from source on MacOS using CMake.

– Quang Hoang
Dec 21 '18 at 22:04












1 Answer
1






active

oldest

votes


















0














Sorry I cannot give you specifics because your setup is not identical to mine, but I am sure we can get you sorted out.



Firstly, when you install packages, such as OpenCV, they tend to create a directory somewhere called lib which contains the C/C++ functions you can call from that package. Inside that directory, you normally find "shared object libraries" which traditionally end in "XXX.so" on macOS. More interestingly, they also contain a sub-directory called site-packages which contains the Python bindings (links). So, on my system, which is likely different from yours, I can find all those site-packages directories with:



find / -type d -name site-packages 2>/dev/null


Sample Output



/usr/local/lib/python3.7/site-packages
/usr/local/lib/python2.7/site-packages
...
...
/usr/local/Cellar/tbb/2018_U5/lib/python2.7/site-packages
/usr/local/Cellar/vips/8.6.5/lib/python3.7/site-packages


Hopefully, you can see that /usr/local/lib/python3.7/site-packages is looking a very likely candidate for where all the Python v3.7 bindings for OpenCV should be.



Good, so now we know how to find the Python bindings, we need to tell Python that information. How? Well, not unreasonably, Python looks at an environment variable called PYTHONPATH to find its stuff. So, using our skill and judgement we need to marry up what we found in the first step with what we now know from the second step. So we do:



export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages


And everything should work. All we need to do is put that in our login profile (probably $HOME/.profile) and we will be ready to go every time we log in.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53886275%2fhow-to-link-opencv-with-python3-in-mac-os%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Sorry I cannot give you specifics because your setup is not identical to mine, but I am sure we can get you sorted out.



    Firstly, when you install packages, such as OpenCV, they tend to create a directory somewhere called lib which contains the C/C++ functions you can call from that package. Inside that directory, you normally find "shared object libraries" which traditionally end in "XXX.so" on macOS. More interestingly, they also contain a sub-directory called site-packages which contains the Python bindings (links). So, on my system, which is likely different from yours, I can find all those site-packages directories with:



    find / -type d -name site-packages 2>/dev/null


    Sample Output



    /usr/local/lib/python3.7/site-packages
    /usr/local/lib/python2.7/site-packages
    ...
    ...
    /usr/local/Cellar/tbb/2018_U5/lib/python2.7/site-packages
    /usr/local/Cellar/vips/8.6.5/lib/python3.7/site-packages


    Hopefully, you can see that /usr/local/lib/python3.7/site-packages is looking a very likely candidate for where all the Python v3.7 bindings for OpenCV should be.



    Good, so now we know how to find the Python bindings, we need to tell Python that information. How? Well, not unreasonably, Python looks at an environment variable called PYTHONPATH to find its stuff. So, using our skill and judgement we need to marry up what we found in the first step with what we now know from the second step. So we do:



    export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages


    And everything should work. All we need to do is put that in our login profile (probably $HOME/.profile) and we will be ready to go every time we log in.






    share|improve this answer




























      0














      Sorry I cannot give you specifics because your setup is not identical to mine, but I am sure we can get you sorted out.



      Firstly, when you install packages, such as OpenCV, they tend to create a directory somewhere called lib which contains the C/C++ functions you can call from that package. Inside that directory, you normally find "shared object libraries" which traditionally end in "XXX.so" on macOS. More interestingly, they also contain a sub-directory called site-packages which contains the Python bindings (links). So, on my system, which is likely different from yours, I can find all those site-packages directories with:



      find / -type d -name site-packages 2>/dev/null


      Sample Output



      /usr/local/lib/python3.7/site-packages
      /usr/local/lib/python2.7/site-packages
      ...
      ...
      /usr/local/Cellar/tbb/2018_U5/lib/python2.7/site-packages
      /usr/local/Cellar/vips/8.6.5/lib/python3.7/site-packages


      Hopefully, you can see that /usr/local/lib/python3.7/site-packages is looking a very likely candidate for where all the Python v3.7 bindings for OpenCV should be.



      Good, so now we know how to find the Python bindings, we need to tell Python that information. How? Well, not unreasonably, Python looks at an environment variable called PYTHONPATH to find its stuff. So, using our skill and judgement we need to marry up what we found in the first step with what we now know from the second step. So we do:



      export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages


      And everything should work. All we need to do is put that in our login profile (probably $HOME/.profile) and we will be ready to go every time we log in.






      share|improve this answer


























        0












        0








        0







        Sorry I cannot give you specifics because your setup is not identical to mine, but I am sure we can get you sorted out.



        Firstly, when you install packages, such as OpenCV, they tend to create a directory somewhere called lib which contains the C/C++ functions you can call from that package. Inside that directory, you normally find "shared object libraries" which traditionally end in "XXX.so" on macOS. More interestingly, they also contain a sub-directory called site-packages which contains the Python bindings (links). So, on my system, which is likely different from yours, I can find all those site-packages directories with:



        find / -type d -name site-packages 2>/dev/null


        Sample Output



        /usr/local/lib/python3.7/site-packages
        /usr/local/lib/python2.7/site-packages
        ...
        ...
        /usr/local/Cellar/tbb/2018_U5/lib/python2.7/site-packages
        /usr/local/Cellar/vips/8.6.5/lib/python3.7/site-packages


        Hopefully, you can see that /usr/local/lib/python3.7/site-packages is looking a very likely candidate for where all the Python v3.7 bindings for OpenCV should be.



        Good, so now we know how to find the Python bindings, we need to tell Python that information. How? Well, not unreasonably, Python looks at an environment variable called PYTHONPATH to find its stuff. So, using our skill and judgement we need to marry up what we found in the first step with what we now know from the second step. So we do:



        export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages


        And everything should work. All we need to do is put that in our login profile (probably $HOME/.profile) and we will be ready to go every time we log in.






        share|improve this answer













        Sorry I cannot give you specifics because your setup is not identical to mine, but I am sure we can get you sorted out.



        Firstly, when you install packages, such as OpenCV, they tend to create a directory somewhere called lib which contains the C/C++ functions you can call from that package. Inside that directory, you normally find "shared object libraries" which traditionally end in "XXX.so" on macOS. More interestingly, they also contain a sub-directory called site-packages which contains the Python bindings (links). So, on my system, which is likely different from yours, I can find all those site-packages directories with:



        find / -type d -name site-packages 2>/dev/null


        Sample Output



        /usr/local/lib/python3.7/site-packages
        /usr/local/lib/python2.7/site-packages
        ...
        ...
        /usr/local/Cellar/tbb/2018_U5/lib/python2.7/site-packages
        /usr/local/Cellar/vips/8.6.5/lib/python3.7/site-packages


        Hopefully, you can see that /usr/local/lib/python3.7/site-packages is looking a very likely candidate for where all the Python v3.7 bindings for OpenCV should be.



        Good, so now we know how to find the Python bindings, we need to tell Python that information. How? Well, not unreasonably, Python looks at an environment variable called PYTHONPATH to find its stuff. So, using our skill and judgement we need to marry up what we found in the first step with what we now know from the second step. So we do:



        export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages


        And everything should work. All we need to do is put that in our login profile (probably $HOME/.profile) and we will be ready to go every time we log in.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 31 '18 at 19:11









        Mark SetchellMark Setchell

        89.4k778177




        89.4k778177
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53886275%2fhow-to-link-opencv-with-python3-in-mac-os%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Angular Downloading a file using contenturl with Basic Authentication

            Olmecas

            Can't read property showImagePicker of undefined in react native iOS