Symbol not found: __PyCodecInfo_GetIncrementalDecoder

后端 未结 12 542
借酒劲吻你
借酒劲吻你 2020-11-30 01:18

Since updating from Homebrew Python 2.7.11 (from 2.7.10) I\'m suddenly unable to test register my package on PyPi from the PyCharm IDE console.

Running (as an \"Exte

相关标签:
12条回答
  • 2020-11-30 01:22

    tl;dr: Fix this issue by doing one of the following:

    • type hash -r python, OR
    • log out and log in.

    EDIT: An answer to my related question makes it clear what's happening here. When you install a new version of python, you may need to run hash -r python to tell bash to reset the "cached" location to the python executable.

    In my case, I was typing python, which was on my $PATH at /usr/local/bin/python. But bash was still using the old cache location /usr/bin/python. So, the old executable was called, but the new path was provided to python in sys.argv[0]. This means that the old executable was running, but the new sys.executable value caused all the wrong modules to get loaded (including the io module).


    I'm having the same problem. I installed python 2.7.11 via an installer from Python.org. Strangely, the issue seems to be related to some subtle difference between how OSX launches python when I invoke it from the shell using the full path vs. using just the word python.

    So, for me, this works (invoking python via the full path /usr/local/bin/python):

    $ which python
    /usr/local/bin/python
    $ /usr/local/bin/python -c "import io"
    $
    

    ... but this doesn't:

    $ python -c "import io"
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/io.py", line 51, in <module>
        import _io
    ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder
      Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
      Expected in: flat namespace
     in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
    

    So, as a workaround, you can try doing the same thing.

    Elsewhere, I've posted a separate question about this puzzling behavior. Maybe somehow merely calling python invokes some strange mix of the 2.7.11 executable with the 2.7.10 dylibs??

    0 讨论(0)
  • Another quick workaround if you don't mind sticking with Python 2.7.10 is to specify the path of the Python interpreter executable that will be used for the virtualenv. On OSX that path is usually /usr/bin/python:

    virtualenv venv --python=/usr/bin/python
    
    0 讨论(0)
  • 2020-11-30 01:29

    I solved this issue by removing the symbolic link that was in /usr/local/bin and copying the actual python binary, that was pointed to by said link, there.

    0 讨论(0)
  • 2020-11-30 01:32

    This happened when I already had tried to create a venv in a folder, and mistakenly was trying to initialize a second one! So I just removed venv directory and re-ran the command. Very likely this is not the answer to this solution, but searching my error brought me here, so it may help some others who are stuck.

    0 讨论(0)
  • 2020-11-30 01:36

    If your problem is caused by anaconda, it is unnecessary to remove //anaconda directory.

    Just open your ~/.bash_profile, find the line

    export PATH="//anaconda/bin:$PATH
    

    and comment it out, then restart your terminal session.

    0 讨论(0)
  • 2020-11-30 01:39

    This happened to me as well in MacVim. I solved it by making sure :python print(sys.path) is using system Python (e.g. /Library/Python/2.7/...)

    Since I installed MacVim via Homebrew, I just did that by:

    1. Spawn a new shell that had which python -> /usr/bin/python. For my case I needed to remove the pyenv line from my .bash_profile. If you installed Python via Homebrew you may want to brew unlink python first

    2. brew reinstall macvim

    0 讨论(0)
提交回复
热议问题