找不到符号:__PyCodecInfo_GetIncrementalDecoder
自从从Homebrew Python 2.7.11(从2.7.10)更新以来,我突然无法testing从PyCharm IDE控制台在PyPi上注册我的软件包。
运行(作为“外部工具”)
python -B setup.py register -r pypitest
我现在得到
Traceback (most recent call last): File "setup.py", line 22, in <module> from setuptools import setup File "/usr/local/lib/python2.7/site-packages/setuptools/__init__.py", line 12, in <module> from setuptools.extension import Extension File "/usr/local/lib/python2.7/site-packages/setuptools/extension.py", line 8, in <module> from .dist import _get_unpatched File "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", line 16, in <module> from setuptools.depends import Require File "/usr/local/lib/python2.7/site-packages/setuptools/depends.py", line 6, in <module> from setuptools import compat File "/usr/local/lib/python2.7/site-packages/setuptools/compat.py", line 17, in <module> import httplib File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 80, in <module> import mimetools File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetools.py", line 6, in <module> import tempfile File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tempfile.py", line 32, in <module> import io as _io File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/io.py", line 51, in <module> import _io ImportError: dlopen(/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder Referenced from: /usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so Expected in: flat namespace in /usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so Process finished with exit code 1
我不知道如何继续。 我只有在我的IDE控制台执行时才会遇到这个问题。 如果我直接在系统命令行(OS X上的terminal)上执行,我没有问题。
OS X 10.11.3; Homebrew Python 2.7.11; PyCharm 5.0.3
tl; dr:通过执行以下操作之一来解决此问题:
- 键
hash -r python
,OR - 注销并login。
编辑:我的相关问题的答案清楚这里发生了什么事情。 当你安装一个新版本的python时,你可能需要运行hash -r python
来告诉bash重置python
可执行文件的“caching”位置。
在我的情况下,我正在inputpython
,它位于/usr/local/bin/python
$PATH
中。 但bash
仍然使用旧的caching位置/usr/bin/python
。 所以,旧的可执行文件被调用,但新的path被提供给python在sys.argv[0]
。 这意味着旧的可执行文件正在运行,但新的sys.executable
值导致所有错误的模块被加载(包括io
模块)。
我有同样的问题。 我通过Python.org的安装程序安装了python 2.7.11。 奇怪的是,这个问题似乎与OSX启动python
时使用完整path而不是使用python
这个词从shell调用它之间的细微差别有关。
所以,对我来说,这工作(通过完整path/usr/local/bin/python
调用/usr/local/bin/python
):
$ which python /usr/local/bin/python $ /usr/local/bin/python -c "import io" $
…但是这不:
$ 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
所以,作为一个解决方法,你可以尝试做同样的事情。
在其他地方,我已经发布了一个关于这个令人费解的行为的单独的问题 。 也许不知何故,只是调用python
调用2.7.11 dylibs的2.7.11可执行文件的一些奇怪的组合?
根据https://github.com/klen/python-mode/issues/634 :
我有同样的问题,但成功修复。 在我的情况下,我用自制软件编译了python和vim,当PYTHON_PATH被指定并设置为我的一个开发环境时,我也有一些库,包括io。 解决方法很简单:打开新的terminal,确保你没有自定义的PYTHON_PATH,卸载python,卸载vim。 重新安装它们。
和
问题解决了。
罪魁祸首是从Python 2.7.10到2.7.11的更新。
如果你使用conda包控制,只需运行“conda install python = 2.7.10”就可以解决这个问题。
这虽然没有给出根本原因。 由于_io
发生这种情况,这看起来像Python 2.7.11中的一个bug(不太可能会出现世界范围内的喧嚣和提示性修复),或者某些包装错误或版本与自制版本不匹配一些相关的)。
尝试在控制台中import _io
,如果成功,请检查它是否从相同的path加载。
重新安装python。
brew unlink python && brew reinstall python
确保path
export PYTHONPATH=$PYTHONPATH:/usr/local/bin/
备份并更改“path”文件的顺序。
sudo nano /etc/paths
看来,path的顺序,正确运行python是决定性的。 就我而言,结果是:
#sudo nano /etc/paths /usr/bin /usr/local/bin /bin /usr/sbin /sbin
在我的Mac上,path是这样的。
$ which python /usr/local/bin/python
现在我可以运行两个:
$ /usr/local/bin/python -c "import io" $ python -c "import io"
我有同样的问题,它只是通过replace_io.so文件成功解决。
sudo find / -name _io.so
复制不属于python-2.7.11的_io.so
文件的path。 例如,复制python-2.7.5下的_io.sopath:/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib- dynload / _io.so
用刚find的_io.so
replace/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
文件。
这发生在我和MacVim中。 我解决了这个问题,确保:python print(sys.path)
使用系统Python (例如/Library/Python/2.7/...
)
由于我通过Homebrew安装了MacVim,我只是这样做了:
-
产生一个具有
which python
– >/usr/bin/python
的新shell。 对于我的情况,我需要从我的.bash_profile
删除pyenv
行。 如果你通过Homebrew安装了Python,你可能需要首先brew unlink python
-
brew reinstall macvim
不能添加评论(?),所以这只是分享我的exp,降级到2.7.10工程fr我。
当我已经尝试在一个文件夹中创build一个venv,并错误地尝试初始化第二个! 所以我刚刚删除Venv目录并重新运行该命令。 很可能这不是解决scheme的答案,但是查找我的错误将我带到这里,所以它可能会帮助其他一些卡住的人。
NLTK下载失败后我得到这个错误,我需要卸载anaconda:
sudo rm -rf ~/anaconda update PATH variable
如果你的问题是由anaconda
引起的,那么不必删除//anaconda
目录。
只要打开你的~/.bash_profile
,find这一行
export PATH="//anaconda/bin:$PATH
并将其注释掉,然后重新启动terminal会话。
如果您不介意粘贴Python 2.7.10,另一个快速解决方法是指定将用于virtualenv的Python解释器可执行文件的path。 在OSX上,该path通常是/usr/bin/python
:
virtualenv venv --python=/usr/bin/python
我通过删除/usr/local/bin
的符号链接并复制实际的python二进制文件来解决这个问题。
当我尝试使用PyCharm时,我遇到了同样的问题。 通过在项目configuration中将“python interpreter”设置为指向我想使用的python虚拟env解决,这是一个Anaconda env。 不知何故解释器path缺less〜/…/ anaconda /…/_ io.so的“anaconda”部分。 无需卸载anaconda。
- 打开一个工作项目时,Pycharm:IDE上的“unresolved reference”错误
- Pycharm:为运行manage.py任务设置环境variables
- 如何设置单击在IntelliJ IDEA中打开文件?
- 如何在PyCharm中debuggingDjango命令
- PyCharm错误:尝试导入自己的模块(python脚本)时出现“No Module”
- 如何在IDEA编辑器中select下一个事件
- 'PyDevTerminalInteractiveShell'对象没有属性'has_readline'
- PyCharm。 / usr / bin / python ^ M:糟糕的解释器
- 我如何使pyCharm停止隐藏(展开)我的python导入?