我使用的是Ubuntu 14.04,我的机器上有多个版本的Python (包括python2.7和python3.4)。几天前,我在我的系统上安装了simplejson。我不记得我是怎么做到的,但我猜它一定和pip install simplejson很相似。然而,现在当我尝试安装任何python包时,一个奇怪的问题开始出现。例如,刚才我尝试使用sudo pip3.4 install Tkinter安装Tkinter,但它抛出了以下错误:
Traceback (most recent call last):
File "/usr/local/bin/pip3.4", line 9, in <module>
load_entry_point('pip==1.5.4', 'console_scripts', 'pip3.4')()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 351, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2363, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2088, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python3/dist-packages/pip/__init__.py", line 61, in <module>
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/usr/lib/python3/dist-packages/pip/vcs/subversion.py", line 4, in <module>
from pip.index import Link
File "/usr/lib/python3/dist-packages/pip/index.py", line 15, in <module>
from pip.wheel import Wheel, wheel_ext
File "/usr/lib/python3/dist-packages/pip/wheel.py", line 25, in <module>
from distlib.scripts import ScriptMaker
File "/usr/share/python-wheels/distlib-0.1.8-py2.py3-none-any.whl/distlib/scripts.py", line 15, in <module>
File "/usr/share/python-wheels/distlib-0.1.8-py2.py3-none-any.whl/distlib/resources.py", line 20, in <module>
File "/usr/share/python-wheels/distlib-0.1.8-py2.py3-none-any.whl/distlib/util.py", line 11, in <module>
ImportError: No module named 'json'有时,如果错误告诉我其中一个文件中包含以下内容,我可以修复此问题:
import json我只是简单地将其转换为
import simplejson as json我尝试卸载simplejson:
sudo pip uninstall simplejson但它给出了相同的错误:找不到json。
有没有人可以帮我解决这个问题,这样我就可以安装python包了?提前谢谢。
发布于 2016-05-16 08:23:14
注意:我没有一个明确的答案,但将提供一系列步骤供您尝试:
第一件事是看看你是否可以从通常的python解释器中导入json:
import json
print(json.__file__) #this would be important to know if it works如果这确实有效(同时也说明了json.__file__是什么),那么您应该尝试使用use pip from the interpreter.
如果无法正常导入json:
这并不奇怪,我没有想到pip会在一个非标准的地方寻找模块。您需要确定json包应该位于计算机的什么位置,可以通过从标准库导入另一个模块并查看它的__file__来实现
>>> import fractions
>>> fractions.__file__
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/fractions.py'对于您来说,这显然是不同的,但我希望在与fractions.py相同的文件夹中有一个json文件夹
如果您不能导入fractions或queue或datetime等。
如果你不能从标准库中导入任何东西,你可能只想重新安装python。
如果json文件夹在那里并且包含一个__init__.py
使用你的文件浏览器的重命名功能来确保没有奇怪的特殊字符,但是我不确定你是否可以从同一个文件夹导入fractions.py而不是一个包,这意味着你的python版本的导入机制有很大的问题。
如果json文件夹与标准库的其余部分不在一起
您的python发行版可能具有与我期望的不同的结构,至少可以查看一下。
您可以在各种python文件using the find command中搜索json文件夹,虽然不是很确定它是如何工作的,但这只是另一种尝试。如果您确实在__init__.py、encode.py、decode.py、scanner.py和tool.py中找到了它(至少在我的版本中是这些),您可能会想弄清楚它是如何出现在那里的,但也可能只是将它移到与其他标准库相同的文件夹中。
如果您找不到json包,或者找到它但它已损坏
那么你就需要更换它了!不用担心,这不是太难,只需抓取一个source release of python from the site并解压缩其中的json包,一旦它被解压,json文件夹应该在Lib文件夹中。只需将其复制/移动到标准库的其余部分,就可以了!
我希望这能帮助你调试正在发生的事情,这涵盖了我能想象到的所有场景,我对哪一个解决了你的问题很感兴趣(或者你能弄清楚什么,这样我就可以提出更多的选择)
https://stackoverflow.com/questions/37213550
复制相似问题