Pea*_*ful 4 python json pip simplejson
我在 Ubuntu 14.04 上工作,我的机器上有多个 Python 版本(它们包括 python2.7 和 python3.4)。几天前,我安装simplejson在我的系统上。我不记得我是怎么做到的,但我想它一定与pip install simplejson. 但是,现在当我尝试安装任何 python 包时,一个奇怪的问题开始出现。例如,刚才我尝试安装Tkinterusingsudo pip3.4 install 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'
Run Code Online (Sandbox Code Playgroud)
有时,如果错误告诉我在我拥有的文件之一中,我可以解决此问题:
import json
Run Code Online (Sandbox Code Playgroud)
我只是转换为
import simplejson as json
Run Code Online (Sandbox Code Playgroud)
我尝试卸载 simplejson:
sudo pip uninstall simplejson
Run Code Online (Sandbox Code Playgroud)
但它给了我同样的错误:找不到 json。
任何人都可以帮我解决这个问题,这样我就可以很高兴地安装 python 包吗?提前致谢。
注意:我没有明确的答案,但会提供一系列您可以尝试的步骤:
首先是看看你是否可以从通常的python解释器中导入json:
import json
print(json.__file__) #this would be important to know if it works
Run Code Online (Sandbox Code Playgroud)
如果这确实有效(以及评论是什么json.__file__),那么您将想要尝试使用解释器中的 pip 。
这并不奇怪,我没想到 pip 会在一个非标准的地方寻找模块。你会想弄清楚 json 包应该在你的计算机上的位置,你可以通过从标准库中导入另一个模块并查看它来做到这一点__file__:
>>> import fractions
>>> fractions.__file__
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/fractions.py'
Run Code Online (Sandbox Code Playgroud)
这对您来说显然会有所不同,但我希望json在同一文件夹中有一个文件夹fractions.py
fractions或queue或datetime等。如果您无法从标准库中导入任何内容,您可能只想重新安装 python。
__init__.py使用文件浏览器的重命名功能来确保没有奇怪的特殊字符,但除此之外我不确定,如果您可以导入fractions.py但不能从同一个文件夹中导入包,这意味着有一些非常错误的导入 python 版本的机制。
json文件夹不包含标准库的其余部分您的 python 发行版可能具有与我预期不同的结构,至少看看它不会有什么坏处。
您可以使用find命令在各种 python 文件中搜索 json 文件夹,不确定它是如何工作的,但只是尝试另一件事。如果您确实通过__init__.py, encode.py, decode.py, scanner.py, 和tool.py( 至少在我的版本中是那些)找到它,您可能想弄清楚它是如何到达那里的,但也许只需将它移动到与其余部分相同的文件夹中标准库。
json软件包,或者您找到了它并且它已损坏那么你需要更换它!别担心,这并不太难,只需从站点获取python的源代码版本并从中提取json包,解压缩后json文件夹应该在Lib文件夹中。只需将它复制/移动到标准库的其余部分,您就可以开始使用了!
我希望这可以帮助您调试正在发生的事情,这涵盖了我可以想象发生的所有场景,我会对哪个解决您的问题感兴趣(或者您能够弄清楚什么,以便我可以提出更多选择)
| 归档时间: |
|
| 查看次数: |
16755 次 |
| 最近记录: |