Linux上的Python模块错误

9 投票
2 回答
4808 浏览
提问于 2025-04-18 06:20

我在Linux Mint 16上使用Python 2.7。最近遇到一个错误,当我通过程序启动器(比如按下Alt F2的提示框或桌面上的图标快捷方式)来运行我的IDE(我试过Spyder和Pycharm)时,模块无法加载,出现了以下错误:

File "/usr/local/lib/python2.7/dist-packages/gurobipy/__init__.py", line 1, in 
    from .gurobipy import *
ImportError: libgurobi56.so: cannot open shared object file: No such file or directory

不过,如果我从命令行运行程序,模块就能正确加载,程序也能正常运行。我每个IDE只有一个安装版本。以下是两个实例的sys.path输出:

通过快捷方式运行Pycharm的sys.path输出:

/home/XXXXXX/bin/pycharm-community-3.1.3/helpers/pydev', '/usr/local/lib/python2.7/dist-packages/pip-1.5.5-py2.7.egg', '/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', '/home/XXXXXX/PycharmProjects/untitled8'] 

通过命令行运行Pycharm的sys.path输出:

/home/XXXXXX/bin/pycharm-community-3.1.3/helpers/pydev', '/usr/local/lib/python2.7/dist-packages/pip-1.5.5-py2.7.egg', '/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', '/home/XXXXXX/PycharmProjects/untitled8']

包gurobipy位于/usr/lib/python2.7/dist-packages

安装gurobi包的步骤如下:

1) 将下载的文件解压到/opt/gurobi562/linux64

2) 在.bashrc文件中添加以下几行:

export GUROBI_HOME="/opt/gurobi562/linux64"

export PATH="${PATH}:${GUROBI_HOME}/bin"

export LD_LIBRARY_PATH="${GUROBI_HOME}/lib"

3) 在/opt/gurobi562/linux64目录下运行python setup.py install,这样就在/usr/local/lib/python2.7中创建了gurobipy文件夹

4) 在.bashrc文件中添加以下一行:

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib/python2.7/dist-   packages/gurobipy"

2 个回答

1

你看到的行为不同,是因为你的 .bashrc 文件在你从终端启动 PyCharm(或其他编辑器)之前总是会被加载。而其他快捷方式并不知道你的 .bashrc 文件,也不需要知道。看起来这个模块需要一些特别的配置。

为了避免每次都要使用终端,你最好修改一下你使用的快捷方式(这需要你自己去弄清楚),来设置正确的环境变量。其中最重要的一个变量是 LD_LIBRARY_PATH

export LD_LIBRARY_PATH="/opt/gurobi562/linux64/lib:/usr/local/lib/python2.7/dist-   packages/gurobipy"

注意: dist- packages 看起来有点奇怪,但我就是从你的问题中复制过来的。如果不管用,那就得你自己去找找正确的目录名称是什么。

15

你没有设置gurobipy的路径。

先下载,然后解压到/opt这个文件夹。

cd to `/opt/gurobi562/linux64` and run `python setup.py install`

接下来,把下面的内容添加到~/.bashrc文件里。

   export GUROBI_HOME="/opt/gurobi562/linux64"
   export PATH="${PATH}:${GUROBI_HOME}/bin"
   export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"

在终端里输入source ~/.bashrc来更新设置。

然后启动ipython命令行,试试输入from gurobipy import *,应该可以正常工作。如果你没有下载并安装许可证,它只会报一个关于许可证的错误,你可以从这里下载。

如果想让所有用户都能访问,首先创建

sudo gedit /etc/ld.so.conf.d/gurobi_pi.conf

然后添加

/opt/gurobi562/linux64/lib

并保存这个文件。

接着输入

sudo ldconfig

来更新系统中的库文件。这样你在Pycharm里就可以访问共享的库了。

撰写回答