我在mac(OSX mavericks)上使用PyCharm来运行如下所示的简单脚本.它只是打印PATH
变量.我在项目目录中有一个virtualenv.我在PyCharm中添加了一个Run Configuration并尝试使用不同的Pythons:
# file mytest.py import os print "PATH: ", os.environ['PATH']
当我使用系统默认的python(/ usr/bin/python)运行时,它会为PATH打印正确的值(即我在.bash_profile文件中配置的PATH),它有点长并且包含许多目录.
但是当我选择venv的Python时,路径只减少到: /usr/bin:/bin:/usr/sbin:/sbin:/Users/myname/projects/myproj/venv/bin
如果我从终端窗口运行脚本,则不会发生这种情况.在这种情况下,它显示系统的python和venv python的正确PATH.如果我停用venv并运行,也不会发生这种情况venv/bin/python mytest.py
.
任何人都知道如何在从PyCharm运行并使用venv时设置正确的PATH值?
您可能应该知道所有环境变量都是继承的.当您在.bash_profile中定义环境变量时,它将在您的终端(bash)中以及将从终端启动的所有进程中可用(这些进程将是bash进程的子进程).这就是您在终端内运行脚本时获得预期值的原因.
你不是从终端启动PyCharm,所以它不会继承PATH.Python或venv也是如此(他们是从PyCharm发起的).
要解决您的问题,您可以在此处选择3个选项:从终端启动PyCharm或将PATH变量定义从.bash_profile移动到会话初始化脚本(PATH将在系统范围内定义)或在PyCharm的运行配置中复制PATH(它有这样的选项)那里)
祝好运!