首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pycharm中无法识别LD_LIBRARY_PATH (linux)

Pycharm中无法识别LD_LIBRARY_PATH (linux)
EN

Stack Overflow用户
提问于 2018-06-20 05:39:07
回答 2查看 1.5K关注 0票数 0

我正在尝试从Pycharm中的python脚本运行一个名为"Cyclotron“的Geant4 (粒子模拟引擎)可执行文件。当我从命令行(即./Cyclotron )执行该文件时,它运行得非常好。

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

代码语言:javascript
复制
./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中无法识别的事实造成的。例如,运行

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
import subprocess
import os

os.chdir("build")

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

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

和输出:

代码语言:javascript
复制
/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。

EN

回答 2

Stack Overflow用户

发布于 2018-06-20 22:56:05

出于某种原因,我第二天再次尝试,Pycharm现在可以看到这个变量。我唯一尝试的不同之处就是在我的特定Run->Edit Configurations脚本的右上角勾选了Share框。即使我后来取消勾选它,该变量仍然可以识别。当我应用更改时,脚本变得轻松了,就像它从一个状态更改到另一个状态一样,但我不知道我修改了什么。

票数 0
EN

Stack Overflow用户

发布于 2019-03-05 12:33:34

我在Ubuntu16.04上用Pycharm-2018.3遇到了这个问题。

以下是解决方案:

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

picture2

令人惊叹的事情发生了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50937301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档