“ python3”和“ python”使用不同的路径变量吗?


9

该命令python将打开Python 2.7.6环境。如果要解释Python 3脚本,则需要将命令重写为python3

我刚刚安装了numpy软件包。为了测试安装是否成功,我运行命令import numpy。使用python命令时效果很好。但是,python3找不到包。

这怎么可能?这两个命令是否使用不同的路径变量?如何更改行为?


Answers:


9

您是完全正确的,它们使用不同PYTHONPATH的。

您可以将Python 2.x和Python 3.x视为完全不同的编程环境。是的,他们将包裹存储在不同的位置。

要使numpy正常工作,您可以输入:

sudo apt-get install python3-numpy

如果要找出软件包的确切存放位置,可以查看模块对象__path__属性:

>>> import numpy
>>> numpy.__path__
['/usr/local/lib/python3.5/site-packages/numpy']

您还可以安装python3-pip然后运行pip3 install whatever以使用Pip安装Python 3 的软件包,以用于Ubuntu中没有的软件包python3-whatever

如果您对distutils,setuptools,easy_install,pip和其余的区别感到困惑,请使用pip。那很酷。:)


2
他们没有使用不同的PYTHONPATH,而是python2仅使用$ PREFIX / lib / python2 *中的软件包,而python3仅使用$ PREFIX / lib / python3 *中的软件包。
dalloliogm

4

不,他们使用相同的PATH。但是,这个问题并不存在PATH

Python 2和Python 3足够不同,因此必须分别为它们编写程序包。您不能将为一个编写的程序包与另一个程序包一起使用。

在Ubuntu中,这些模块存储在不同的位置,并分别打包- python-numpy对于Python 2,python3-numpy对于Python3。如果要在Python 3中使用numpy,请安装python3-numpy

$ python3 -c 'import sys; print (sys.path)'
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/home/muru/.local/lib/python3.4/site-packages', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
$ python2 -c 'import sys; print (sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/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/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

3

确实,两者都从不同的位置导入模块:

  • Python2.7: /usr/lib/python2.7/dist-packages/numpy/
  • Python3.x: /usr/lib/python3/dist-packages/numpy/

为了能够同时导入numpy两个解释器,请确保安装它们相应的软件包:

  • Python2.7: sudo apt-get install python-numpy
  • Python3.x: sudo apt-get install python3-numpy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.