python 在一个终端中导入成功但在另一个终端中失败

python import successful in one terminal but fails in another

我下载并安装(构建+制作)一个cython包,g2opy成功。当我尝试检查是否一切顺利时,我得到了这个:

(cv) clmno@machine:~/OpenSource/python/g2opy$ python
Python 3.4.5 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:47:47) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import g2o
>>> import numpy
>>> import cv2

因此,我假设一切正常并打开了另一个终端 window。并尝试导入相同的模块,但失败了:

(cv) clmno@machine:~$ python
Python 3.4.5 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:47:47) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import g2o
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'g2o'

这与共享库(.so 文件)有关吗?导入成功了,为什么下次导入失败了?

如果您在本地安装包,则需要设置PYTHONPATH。好像没设置好。

在第二个终端中,与第一个终端相比,您 运行ning Python 位于不同的目录中。这表明您构建的库不在 Python 路径中。它在第一个终端中工作,因为 g2o 库位于您当前 运行ning Python 所在的目录中。正如 Matthieu 建议的那样,将“~/OpenSource/python/g2opy”添加到您的 PYTHONPATH 环境变量中。

在 ~/.bashrc 中,添加:

export PYTHONPATH=$PYTHONPATH:path/to/g2opy

然后运行source ~/.bashrc更新当前路径下的环境变量