【发布时间】:2021-05-12 09:22:32
【问题描述】:
我想使用 Python 从它的 bash 命令调用一个应用程序。我将应用程序的路径添加到 PATH 环境变量中,以便在终端中工作。 但是,在 Pycharm 中执行此操作时,它不起作用。我发现,那是因为当我在 Pycharm 中调用应用程序时,显然环境变量并没有全部加载。
这就是我在终端中所做的:
(save) philipp@philipp-Blade-15-Advanced-Model-Early-2020:~$ python
Python 3.8.2 (default, Mar 25 2020, 17:03:02)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ["PATH"]
'/home/philipp/anaconda3/envs/save/bin:/home/philipp/anaconda3/condabin:/home/philipp/sumo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'
当我在 Pycharm 中运行相同的命令时,我得到以下输出:
'/home/philipp/anaconda3/envs/save/bin:/home/philipp/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'
Pycharm 的输出丢失了/home/philipp/sumo/bin,这是我安装应用程序的地方,也是我需要调用它的地方。我对此进行了很多研究,但无法弄清楚问题是什么......我在两种情况下都使用相同的 Anaconda 环境。能指出问题吗?
【问题讨论】:
-
前两个目录似乎是您的虚拟环境添加的,而
/home/philipp/sumo/bin是您的shell配置文件添加的。 PyCharm 没有由您的登录 shell 启动,因此不会继承包含sumo/bin的路径。 -
@chepner 是的,我在 .bashrc 文件中将
/home/philipp/sumo/bin添加到PATH。你能告诉我,我如何使用终端在 PyCharm 中使用的相同 shell?另外,在 Windows 中这是默认工作的,我只在 Linux 中遇到过这个问题。 -
这个答案 (stackoverflow.com/questions/27553576/…) 说,
.bashrc在登录时被加载到os.environ。显然这不可能是真的。 -
或多或少,
.bashrc是在您的 shell 启动时获取的。但是 PyCharm 没有你的 shell 作为父级;它基本上是由另一个进程为你执行的,所以它不会从你的登录shell继承。 -
@chepner 好的,谢谢。那么当 PyCharm 启动一个新的 shell 时,如何从 bashrc 中插入环境变量呢?还有一个平台无关的方法吗?你能写一个答案,这样我就可以投票了吗?
标签: python bash environment-variables