如何让python访问ubuntu中的系统范围模块?

Posted

技术标签:

【中文标题】如何让python访问ubuntu中的系统范围模块?【英文标题】:How to give python access to system wide modules in ubuntu? 【发布时间】:2016-11-12 21:13:27 【问题描述】:

我在 Ubuntu 16.04(64 位版本)中安装了 python 2.7.12。我也通过 pip 安装了 numpy、scipy、sympy 等模块。我的问题是,当我通过终端打开 python 命令行并尝试导入这些模块时,出现以下错误:

$ python
Python 2.7.12 (default, Jul 10 2016, 20:42:07) 
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named numpy
>>>

在做一些研究后,我从thread 发现,如果我使用/usr/bin/python 打开 python 命令行并尝试导入这些模块,我不会收到任何错误。

$ /usr/bin/python
Python 2.7.11+ (default, Apr 17 2016, 14:00:29) 
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import scipy
>>> import sympy
>>> import matplotlib
>>> import pandas
>>> 

但我想知道是否有任何方法可以从终端输入python 并在 python 命令行中导入这些模块?比如我写一个这样的程序,

x = 2
print x
y = 5
print y
print x+y

import numpy
import scipy
import sympy

将它保存在我桌面上一个名为 test.py 的文件中,然后使用命令/usr/bin/python test.py 打开它,我得到了所需的输出。

$ /usr/bin/python test.py
2
5
7

但如果我尝试使用命令 python test.py 进行相同操作,我会再次收到错误

$ python test.py
2
5
7
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    import numpy
ImportError: No module named numpy

据我了解,python 无法访问系统范围的模块,因为它是在本地安装的。如果是这样,有没有办法使 python 全局或 python 本地的模块?在过去的几个小时里,我一直在尝试寻找解决方案,但我还没有找到任何东西,而且我是 Linux 新手。感谢您的帮助。

【问题讨论】:

【参考方案1】:

我认为根本原因是你在 $PATH 下有几个 python 二进制文件,而你的系统默认不使用/usr/bin/python

    运行命令which python查看默认使用哪个python 将默认 python 文件重命名为“python-2-7-12”之类的名称

然后尝试再次运行python test.py 看看是否解决。

【讨论】:

另一种方法是你可以在你的配置文件中创建一个别名:vim ~/.bashrc alias python='/usr/bin/python' 第一种方法效果很好。当我运行which python 时,它显示/usr/local/bin/python。所以我按照您的指示将那里的 Python 文件重命名为 Python_Default。现在,当我从终端运行 python 并输入import module 时,它就可以工作了。此外,which python 现在显示/usr/bin/python。根目录中有三个不同的 python 文件。非常感谢您的帮助。 @rsnaveen 你自己安装了 Python 吗?除非您必须使用与 Ubuntu 16.04 已安装的 Python 不同的特定 Python 版本,否则没有理由这样做。 @edwinksl 我不知道 Ubuntu 预装了 python。伙计,我现在觉得自己很愚蠢!感谢您指出这一点。

以上是关于如何让python访问ubuntu中的系统范围模块?的主要内容,如果未能解决你的问题,请参考以下文章

Python之OS模块详解

默认情况下通过 Ubuntu 10.10 上的 MySQLdb Python 库访问 XAMPP

win10系统virtualbox装的ubuntu19.04,如何设置网络才能在win10中访问?

Ubuntu中python链接本地数据库

如何在python中访问类定义中的非本地范围?

在 ubuntu 中卸载 python 模块