Pycharm(Linux)无法识别LD_LIBRARY_PATH

时间:2018-06-19 21:39:07

标签: pycharm environment-variables

我正在尝试通过Pycharm中的python脚本运行一个名为“回旋加速器”的Geant4(粒子模拟引擎)可执行文件。当我从命令行执行文件./Cyclotron时,该文件运行完全正常。

当我尝试使用subprocess.check_call()方法执行相同的bash命令时,出现以下错误消息:

./Cyclotron: error while loading shared libraries: libG4zlib.so: 
cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "/home/nicolas/Geant4/geant4.10.04.p01/main_stuff/cyclotron- 
geant4/main.py", line 17, in <module>
    subprocess.check_call(command.split())
  File "/usr/lib/python3.6/subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['./Cyclotron']' returned non- 
zero exit status 127.`

这似乎是由于LD_LIBRARY_PATH变量未在Pycharm内部识别而造成的。例如,运行

import os
print(os.environ.get("LD_LIBRARY_PATH"))

返回None。我见过有人建议在Run->Edit Configurations下添加变量,并将其添加到“环境变量”下(我在默认值下为我的脚本和Python尝试过),但仍然没有运气。

在命令行上键入 echo $LD_LIBRARY_PATH返回/home/nicolas/Root/build/lib:/usr/lib/x86_64-linux-gnu:/home/nicolas/Geant4/install/lib

这是我的python代码:

import subprocess
import os

os.chdir("build")

bash_commands = [
    "cmake ..",
    "make -j4",
    "./Cyclotron"
]

for command in bash_commands:
    subprocess.check_call(command.split())

和输出:

/home/nicolas/PycharmProjects/Main/venv/bin/python 
/home/nicolas/Geant4/geant4.10.04.p01/main_stuff/cyclotron-geant4/main.py
-- Configuring done
-- Generating done
-- Build files have been written to: 
/home/nicolas/Geant4/geant4.10.04.p01/main_stuff/cyclotron-geant4/build
[100%] Built target Cyclotron
$LD_LIBRARY_PATH
./Cyclotron: error while loading shared libraries: libG4zlib.so: cannot 
open shared object file: No such file or directory
Traceback (most recent call last):
  File "/home/nicolas/Geant4/geant4.10.04.p01/main_stuff/cyclotron- 
geant4/main.py", line 14, in <module>
    subprocess.check_call(command.split())
  File "/usr/lib/python3.6/subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['./Cyclotron']' returned non-zero 
exit status 127.

Process finished with exit code 1

我正在使用带有Python 3.6解释器的Ubuntu 18.04,Pycharm 2018。

2 个答案:

答案 0 :(得分:0)

由于某种原因,我第二天再次尝试,Pycharm现在可以看到该变量。我唯一尝试做的另一件事是在我特定的python脚本的Run->Edit Configurations下右上角的Share框中打勾。即使之后取消勾选,该变量仍会被识别。当我应用更改(例如从某种状态更改为另一种状态)时,脚本变亮了,但是我不知道自己所做的修改。

答案 1 :(得分:0)

我在Ubuntu 16.04上遇到了Pycharm-2018.3的问题。

这是解决方案:

运行->编辑配置->环境-> Add LD_LIBRARY_PATH picture1

picture2

然后发生惊人的事情。