[英]ipython reads wrong python version
我在使用 Python、iPython 和庫時遇到了麻煩。 以下幾點顯示了問題鏈。 我在 Mac Lion 上運行 Python 2.7。
我已經嘗試了一些我從其他博客文章中遇到的東西。 但是他們都沒有幫助,而且不幸的是,我不太清楚我對其中的一些人做了什么。 例如:我嘗試使用 easy_install 和 pip 卸載並重新安裝 ipython。 我還嘗試通過自制軟件重新安裝所有內容,並修改路徑 .bash_profile。
好的快速修復:
which python
給你/usr/bin/python
,對嗎? 做
which ipython
我打賭那將是/usr/local/bin/ipython
。 我們來看看里面:
編輯 2016 年 9 月 7 日——文件現在看起來像這樣:
cat /usr/local/bin/ipython
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from IPython import start_ipython
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(start_ipython())
我的工作正常,但我的情況並不完全像 OP。
原始答案 - 2013 年 9 月 30 日:
cat /usr/local/bin/ipython
#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.12.1','console_scripts','ipython'
__requires__ = 'ipython==0.12.1'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('ipython==0.12.1', 'console_scripts', 'ipython')()
)
啊哈 - 在您的編輯器中打開/usr/local/bin/ipython
(具有特權),並將第一行更改為
#!/usr/local/bin/python
保存,啟動 iPython,應該說它正在使用您現在想要的版本。
發布@Matt 的評論作為答案只是為了讓它更明顯
python -m IPython
將 ipython 作為一個模塊加載,首先在路徑上可以訪問任何 python。 就我而言,我預先安裝了一個,另一個是從 brew 中添加的。 這只是完美的作品。
使用 virtualenv 怎么樣? 我很喜歡。 也許這不是更快的方式,但我認為這很清楚。
創建 virtualenv 時,可以使用 -p 標志指定 python 路徑。
對於蟒蛇 2.7
$ virtualenv -p /usr/bin/python2.7 venv2.7
$ source venv2.7/bin/activate
(venv2.7)$ pip install ipython
(venv2.7)$ ipython
用於蟒蛇 3.4
$ virtualenv -p /usr/bin/python3.4 venv3.4
$ source venv3.4/bin/activate
(venv3.4)$ pip install ipython
(venv3.4)$ ipython
首先,我會確保您使用的是正確的python。 在命令提示符下鍵入:
which python
python -V
第一個會告訴您路徑,第二個會告訴您正在使用的 Python 版本。
我的解決方案很簡單,愚蠢但有效。
我使用python -V
來確定版本是什么
$ python -V
Python 2.7.10
然后在 .bash_profile 中創建別名
$ vi ~/.bash_profile
添加一行
alias ipython="python -m IPython"
那么你將在 python 2.7 中得到一個ipython
。 🙂
(順便說一下,我的ipython
是通過homebrew
安裝的,它默認會在 python 3 中運行 ipython。)
$ brew install ipython
非常相關: http : //conda.pydata.org/docs/troubleshooting.html#shell-command-location 。
由於 shell '散列' 和路徑變量,會遇到 td;lr 問題。
使用pyenv的類似方法
pyenv install 3.4.5
pyenv local 3.4.5
pip install ipython
ipython
現在它將顯示正確版本的python
Python 3.4.5
我能想到的最簡單的解決方案,不需要擺弄環境、安裝的文件或其他任何東西,它依賴於以下事實:
ipython
實際上是一個 Python 腳本。pip intall
每個解釋器單獨pip intall
的。如果你運行的 Python 版本安裝了 IPython 包,你可以這樣做
/path/to/desired/python $(which ipython)
這將使用您想要的解釋器而不是shebang 中列出的解釋器運行ipython
腳本。
你的問題基本上是讓 ipython 使用正確的 python。
所以解決問題的方法是讓 ipython 使用正確的 python(安裝了像 scipy 這樣的庫)
我在這里寫了一個解決方案:
我遇到了同樣的問題,但以下是在 OSX 12, Sierra 上對我有用的唯一解決方案。
ipython 總是為 python 3.6 啟動,但我需要它用於 2.7。 我找不到 2.7 的 ipython 啟動腳本,也找不到要使用python -m
執行的 IPython 模塊。 brew instally ipython
pip install ipython
或pip2 install ipython
能給我 2.7 版本。 所以我手動得到了它。
brew install ipython@5
從這里安裝 2.7 版本,但不會把它放在你的$PATH
因為它知道名稱與另一個包沖突。 ln -s /usr/local/Cellar/ipython@5/5.5.0_1/bin/ipython /usr/local/bin/ipython2
將解決這個問題,讓您只需從 shell 提示符運行ipython2
對我來說,因為我很認真地想在 2.7 中使用 ipython,所以我還運行了以下命令。
ln -s /usr/local/Cellar/ipython/6.2.1/bin/ipython /usr/local/bin/ipython3
rm -f /usr/local/bin/ipython
ln -s /usr/local/bin/ipython2 /usr/local/bin/ipython
如果您使用的是 anaconda 或其他一些虛擬環境包裝器,則此處提到的所有答案都無助於解決問題。
此答案基於您使用 anaconda 的假設。
假設您在 python 3 環境中,當在 jupyter notebook 上創建筆記本時,它顯示“Python 2”而不是“Python 3”。
這是因為“ipython”本質上是一個運行的腳本,在這個腳本中它提到了它用來執行命令的python版本。 您需要做的就是更改 ipython 的這一行以使用您想要的 python 版本。
首先停止ipython服務器,使用命令“which python”獲取當前環境的python可執行文件的位置
我的輸出是:
/home/sourabh/anaconda2/envs/py3/bin/python
現在使用命令“which ipython”獲取ipython的可執行位置
我的是 :
/home/sourabh/anaconda2/envs/py2/bin/python
請注意,它使用的是不同版本的 python,即。 python 來自運行不同版本的 python 的特定環境,即從不同的環境運行 python。
現在導航到目錄 anaconda2/bin(對於 anaconda 3 用戶,它應該是 anaconda3/bin )並搜索“ipython”文件。 在此編輯第一行將其指向您想要的當前 python 版本。 即“which python”的輸出即:
#!/home/sourabh/anaconda2/envs/py3/bin/python
請注意,我將 python 環境從 py2(running python 2.7) 更改為 py3(running python 3.5)。
保存文件。 並運行 jupyter notebook,現在在創建新筆記本時,“Python 3”選項應該可見。
干杯!
對我來說,在 Windows 10 上,我的ipython.exe與我的python不匹配。 我知道這是因為 ipython 說
----> 3 from pywinauto import handleprops
4 from pywinauto import timings
5 from pywinauto.application import Application
ModuleNotFoundError: No module named 'pywinauto'
但是,當我使用> python
執行包含程序時,這有效
這是不匹配。
蟒蛇信息
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.
[DOT DOT DOT]
蟒蛇信息
Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
這是我的解決方法。 我改變了對Python\\...\\Scripts
引用,這是 ipython.exe 隱藏的地方
C:\\Users\\joeco\\AppData\\Roaming\\Python\\Python38\\Scripts
C:\\Users\\joeco\\AppData\\Roaming\\Python\\Python39\\Scripts\\
結果
from pywinauto import handleprops
成功我安裝了 python2.7、python3.6 和 python3.8
sahil@rubeus:~$ ls -ls /usr/bin/python*
0 lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7
0 lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python2 -> python2.7
3548 -rwxr-xr-x 1 root root 3633000 Feb 27 20:40 /usr/bin/python2.7
0 lrwxrwxrwx 1 root root 9 Oct 25 2018 /usr/bin/python3 -> python3.6
4424 -rwxr-xr-x 2 root root 4526456 Jan 26 21:03 /usr/bin/python3.6
5016 -rwxr-xr-x 1 root root 5134032 Jun 3 23:23 /usr/bin/python3.8
我在這個位置有 ipython 文件
sahil@rubeus:~$ which ipython
/home/sahil/.local/bin/ipython
它有以下內容
#!/usr/bin/python2
# -*- coding: utf-8 -*-
import re
import sys
from IPython import start_ipython
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(start_ipython())
於是我就在同一地點與名稱ipython3.6和ipython3.8作出文件的兩個副本和更新的第一行指向特定的Python版本, /usr/bin/python3.6
和/usr/bin/python3.8
在我的情況下。
所以現在有 3 個文件,每個文件都指向特定的 python 版本
sahil@rubeus:~$ ls ~/.local/bin/ipython*
/home/sahil/.local/bin/ipython
/home/sahil/.local/bin/ipython3.6
/home/sahil/.local/bin/ipython3.8
現在,當我需要啟動 python2 時,我只需從終端運行 ipython 並以同樣的方式在 python3.8 中獲取 ipython,我運行 ipython3.8
sahil@rubeus:~$ ipython3.8
Python 3.8.11 (default, Jul 3 2021, 17:53:42)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.25.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
注意:您可能需要使用命令python3.6 -m pip install IPython
或python3.8 -m pip install IPython
為特定的 python 版本python3.6 -m pip install IPython
python3.8 -m pip install IPython
。 我不確定它是用python安裝的還是我單獨安裝的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.