我正在使用virtualenv,virtualenvwrapper和PyCharm。 我有一个postactivate脚本运行一个“export”命令来应用每个项目所需的环境变量,所以当我运行“workon X”时,变量已经为我准备好了。
然而,当使用PyCharm时,我似乎无法通过运行postactivate文件(在“before launch”设置中)来使用这些变量。我必须在Run / Debug配置窗口中手动输入每个环境变量。
有没有办法在PyCharm中自动设置环境变量?或者我是否必须为每个新项目和变量手动执行此操作?
感谢。
答案 0 :(得分:4)
我有同样的问题。 尝试通过UI维护环境变量是一项繁琐的工作。 似乎pycharm只在启动时通过bash_profile加载env变量。 之后,任何导出或尝试在作业前运行 来更改bash_profile都是无用的
想知道pycharm团队什么时候会改进这个
在我的情况下,我的远程解释器的解决方法比本地解决方案更好 因为我可以修改/ etc / environment并重新启动vm
对于本地翻译,我能做的最好的解决方案是:
<强> 1。创建模板运行/调试配置模板并将其克隆
如果您的env变量是稳定的,这是一个简单的解决方案,用于创建具有相同env变量的diff配置,而无需重新键入它们。
<强> 2。更改脚本
也许在主脚本中使用os.environ [] = value添加一些代码 但我不想这样做,它改变了我的产品代码,可能会被意外提交
希望有人能给出更好的答案,我在这个问题上花了太多时间......
答案 1 :(得分:3)
我今天正在寻找一种方法来做到这一点并偶然发现了同一个问题的另一个变体(下面链接)并将我的解决方案留在那里,尽管它对这个问题似乎也很有用。他们正在处理代码本身中的环境变量加载。
鉴于这在开发过程中主要是一个问题,我更喜欢这种方法:
打开终端
假设正在使用virtualenvwrapper,请激活项目的virtualenv,这将导致钩子运行并设置环境变量(假设您将其设置为,例如,postactivate钩子)
从此命令行启动PyCharm。
答案 2 :(得分:1)
另一个黑客解决方案,但是一个简单的解决方案,就我的目的来说,足够了。请注意,虽然这对于Ubuntu(可能是Mint)linux来说是特别的,但Mac也可能有一些用处。
我所做的是在启动脚本(pycharm.sh)中添加一行来获取所需的环境变量(在我的情况下,我遇到的问题是pycharm中的cx_Oracle,否则会影响脚本运行命令行)。如果将环境变量保存在一个名为(例如,主目录中的.env_local)的文件中,则可以将以下行添加到pycharm.sh: 。 $ HOME / .env_local
关于为什么我特意使用&#39;这里需要注意的两件重要事情。&#39; (而不是&#39;来源&#39;)以及为什么我使用&#39; $ HOME&#39;而不是&#39;〜&#39 ;,这在bash中是有效可互换的。 1)我注意到pycharm.sh使用#!/ bin / sh,我意识到在Ubuntu中,sh现在指向破折号(而不是bash)。事实证明,破折号没有来源&#34;内置&#34;,也不会解决你的家庭目录。
我也意识到每次升级PyCharm时,我都必须修改pycharm.sh文件,所以这不是理想的。仍然需要管理运行配置!希望它有所帮助。
答案 3 :(得分:0)
好的,我找到了更好的解决方法!
去终点站和
1. workon 你的虚拟名字
2. pip install fabric
添加一个python文件并将其命名为&#34; fabric.py&#34;在你的项目根目录下,通过下面的代码,
将路径变量更改为你自己的
from fabric.api import *
import os
path_to_your_export_script = '/Users/freddyTan/workspace/test.sh'
# here is where you put your virtualenvwrapper environment export script
# could be .bash_profile or .bashrc depend on how you setup your vertualenvwrapper
path_to_your_bash_file = '/Users/freddyTan/.bash_profile'
def run_python(py_path, virtualenv_path):
# get virtualenv folder, parent of bin
virtualenv_path = os.path.dirname(virtualenv_path)
# get virtualenv name
virtualenv_name = os.path.basename(virtualenv_path)
with hide('running'), settings(warn_only=True):
with prefix('source %s' % path_to_your_export_script):
with prefix('source %s' % path_to_your_bash_file):
with prefix('workon %s' % virtualenv_name):
local('python %s' % py_path)
转到
优先 - &GT;外部工具 - &gt;点击添加按钮
并填写以下信息
Name: whatever
Group: whatever
Program: "path to your virtualenv, should be under '$HOME/.virtualenvs' by default"/bin/fab
Parameter: run_python:py_path=$FilePath$,virtualenv_path=$PyInterpreterDirectory$
Working directory: $ProjectFileDir$
转到main.py,右键单击,找到外部名称(例如&#34;无论&#34;),然后单击它
您还可以为此外部工具添加快捷方式
screenshot
这只适用于python 2.x,因为fabric不支持python 3