[英]IPython import failure and python sys.path in general
我正在按照這篇文章制作一個ipython規則所有的virtualenvs。
根據我的理解,該帖子的主要思想是,當在virtualenv中,ipython無法找到它的模塊。
(a-virtualenv)me@pc:~$ ipython
Traceback (most recent call last):
File "/usr/bin/ipython", line 19, in <module>
from IPython.frontend.terminal.ipapp import launch_new_instance
ImportError: No module named IPython.frontend.terminal.ipapp
要解決這個問題,我將其添加到我的/ usr / bin / ipython中
import sys
if "/usr/lib/python2.7/dist-packages" not in sys.path:
sys.path.append("/usr/lib/python2.7/dist-packages")
這個技巧適用於Balthazar。 但就我而言,我明白了
Traceback (most recent call last):
File "/usr/bin/ipython", line 18, in <module>
from IPython.frontend.terminal.ipapp import launch_new_instance
File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 46, in <module>
from .frontend.terminal.embed import embed
File "/usr/lib/python2.7/dist-packages/IPython/frontend/terminal/embed.py", line 37, in <module>
from IPython.frontend.terminal.ipapp import load_default_config
File "/usr/lib/python2.7/dist-packages/IPython/frontend/terminal/ipapp.py", line 38, in <module>
from IPython.core.completer import IPCompleter
File "/usr/lib/python2.7/dist-packages/IPython/core/completer.py", line 84, in <module>
from IPython.utils import generics
File "/usr/lib/python2.7/dist-packages/IPython/utils/generics.py", line 19, in <module>
from IPython.external.simplegeneric import generic
File "/usr/lib/python2.7/dist-packages/IPython/external/simplegeneric/__init__.py", line 4, in <module>
from _simplegeneric import *
ImportError: No module named _simplegeneric
我想也許我應該將/usr/lib/python2.7/dist-packages/IPython/external
添加到/usr/bin/ipython
sys.path
。 我得到的是
Traceback (most recent call last):
File "/usr/bin/ipython", line 18, in <module>
from IPython.frontend.terminal.ipapp import launch_new_instance
File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 43, in <module>
from .config.loader import Config
File "/usr/lib/python2.7/dist-packages/IPython/config/loader.py", line 27, in <module>
from IPython.utils.path import filefind, get_ipython_dir
File "/usr/lib/python2.7/dist-packages/IPython/utils/path.py", line 24, in <module>
from IPython.utils.process import system
File "/usr/lib/python2.7/dist-packages/IPython/utils/process.py", line 27, in <module>
from ._process_posix import _find_cmd, system, getoutput, arg_split
File "/usr/lib/python2.7/dist-packages/IPython/utils/_process_posix.py", line 27, in <module>
from IPython.utils import text
File "/usr/lib/python2.7/dist-packages/IPython/utils/text.py", line 27, in <module>
from IPython.external.path import path
ImportError: cannot import name path
此錯誤發生在IPython/__init__py
第43行,但前一行發生在第46行。
如何讓ipython與virtualenv一起工作?
如何將/usr/lib/python2.7/dist-packages/IPython/external
添加到sys.path
導致新的錯誤?
為了更好地理解python導入路徑,我應該閱讀什么?
謝謝!
PS:正常的IPython sys.path
['',
'/usr/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-control-panel',
'/usr/lib/python2.7/dist-packages/ubuntuone-couch',
'/usr/lib/python2.7/dist-packages/ubuntuone-installer',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol',
'/usr/lib/python2.7/dist-packages/IPython/extensions']
IPython現在似乎工作了!
因為ipython找不到simplegeneric。 我試圖找到simplegeneric,發現simplegeneric在'/usr/lib/pymodules/python2.7'中。 在添加'/usr/lib/pymodules/python2.7'之后,ipython工作正常。
Jeff Tratner的評論真有幫助!
如果你使用apt-get
安裝ipython3
,你就不會遇到任何問題。
而不是ipython
,你應該在終端上鍵入ipython3
。
對於Python 2,使用ipython2
。
改變路徑並沒有任何幫助。 然而,作為一個超級用戶運行ipython工作(雖然我並不為此感到自豪!)
sudo ipython
pip install ipython
而不是apt-get install ipython
。 前者安裝在virtualenv中,后者安裝到你的系統python包中。
我有同樣的問題,在我的情況下,原因是目錄:/usr/lib/python2.7/dist-packages沒有添加到創建虛擬環境時的路徑(我想知道原因)
在我的情況下,終端中的以下解決了問題:
workon 'your_environment_here'
add2virtualenv /usr/lib/python2.7/dist-packages
注意:這假設您使用的是virtualenvwrapper
在我的例子中,它是一個更高的包,在我的自定義Python路徑名為“path”,導致ImportError來自:
import IPython.external.path as path
我在一個新的ubuntu主機中經歷了一些奇怪的事情,並意識到我在mac上與mbuvirtualenv的行為有所不同,而不是ubuntu。 我已經克服了這個差異
'mkvirtualenv --system-site-packages mynewenv'
對我來說,解決方案是將 IPython從0.13.2 升級到目前最新的4.0.0。
類似的traceback
我在成功安裝ipython
后遇到了python 3.5.4
和pip 10.0.1
。
line 32, in <module>
from .debugger import TerminalPdb, Pdb
File "/usr/lib/python3.5/site-packages/IPython/terminal/debugger.py", line 6, in <module>
from IPython.core.completer import IPCompleter
File "/usr/lib/python3.5/site-packages/IPython/core/completer.py", line 137, in <module>
from IPython.utils import generics
File "/usr/lib/python3.5/site-packages/IPython/utils/generics.py", line 8, in <module>
from simplegeneric import generic
ImportError: No module named 'simplegeneric'
更新或安裝simplegeneric
即sudo pip install simplegeneric --upgrade
我得到
要求已經是最新的:/usr/lib/python3.5/site-packages(0.8.1)中的simplegeneric
經過一些初步試驗后,我在google / stackoverflow上搜索,看看是否有其他人遇到過類似的問題並發現了這一點。 它的@zjk答案可以幫助我找到解決方案。
解決方案:在python3.5
安裝包dir中找到只有egg
文件夾。 所以我刪除了它們並重新安裝了simplegeneric
。
sudo rm -rf /usr/lib/python3.5/site-packages/simplegeneric-0.8.1-py3.5.egg-info/
sudo pip install simplegeneric
之后ipython就像魅力一樣。
注意:我在系統級安裝包,這就是sudo
所需的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.