【问题标题】:PyCharm - automatically set environment variablesPyCharm - 自动设置环境变量
【发布时间】:2013-12-22 10:08:06
【问题描述】:

我正在使用 virtualenv、virtualenvwrapper 和 PyCharm。 我有一个 postactivate 脚本,它运行一个“导出”命令来应用每个项目所需的环境变量,所以当我运行“workon X”时,这些变量已经为我准备好了。

但是,在使用 PyCharm 时,我似乎无法通过运行 postactivate 文件(在“启动前”设置中)让它使用这些变量。我必须在运行/调试配置窗口中手动输入每个环境变量。

有没有办法在 PyCharm 中自动设置环境变量?还是我必须为每个新项目和变量更改手动执行此操作?

【问题讨论】:

  • asafge,您是否找到了一种解决方案,可以通过“启动前”脚本或 PyCharm 可以运行的其他类型的脚本应用环境变量来实现您最初尝试做的事情?
  • @NESPowerGlove 看到 Antero Ortiz 的回答。 OP 我建议接受它,因为它很好地解决了您的问题!自己试过了。

标签: virtualenv pycharm


【解决方案1】:

我今天正在寻找一种方法来做到这一点,偶然发现了同一问题的另一个变体(链接如下)并将我的解决方案留在那里,尽管它似乎对这个问题也很有用。他们正在处理在代码本身中加载环境变量。

鉴于这主要是开发过程中的一个问题,我更喜欢这种方法:

  1. 打开一个终端

  2. 假设正在使用 virtualenvwrapper,激活项目的 virtualenv,这将导致钩子运行并设置环境变量(假设您将它们设置在 postactivate 钩子中)

  3. 从此命令行启动 PyCharm。

Pycharm 然后就可以访问环境变量了。可能是因为 PyCharm 进程是 shell 的子进程。

https://stackoverflow.com/a/30374246/4924748

【讨论】:

    【解决方案2】:

    我也有同样的问题。 试图通过 UI 维护环境变量是一项乏味的工作。 似乎 pycharm 在启动时只通过 bash_profile 加载环境变量一次。 之后,任何 export 或尝试运行 before job 来更改 bash_profile 都是无用的

    想知道 pycharm 团队何时会改进这一点

    就我而言,我的远程解释器的解决方法比本地更好, 因为我可以修改 /etc/environment 并重新启动虚拟机

    对于本地解释器,我能做的最好的解决方案是:

    1.创建模板运行/调试配置模板并克隆它

    如果您的环境变量是稳定的,这是一个简单的解决方案,可以使用相同的环境变量创建差异配置,而无需重新键入它们。

    1. 创建模板配置,输入你需要的环境变量。
    2. 克隆它们

    see picture

    2。更改你的脚本

    也许可以通过在主脚本中使用 os.environ[] = value 添加一些代码 但我不想这样做,它会更改我的产品代码并且可能会被意外提交

    希望有人能给出更好的答案,我在这个问题上花了太多时间......

    【讨论】:

    • 顺便说一句,如果您对远程解释器解决方案感兴趣。我可以发布它。但是它需要更多的设置。 vagrant 和 virtualbox 是必需的
    【解决方案3】:

    另一种 hack 解决方案,但对我而言,这是一个简单的解决方案就足够了。请注意,虽然这是 Ubuntu(可能是 Mint)Linux 特有的,但 Mac 可能也有一些用处。

    我所做的是在启动脚本 (pycharm.sh) 中添加一行来获取所需的环境变量(在我的情况下,我遇到了 Pycharm 中的 cx_Oracle 问题,这些问题不会影响在命令行运行的脚本)。如果您将环境变量保存在主目录中名为 .env_local 的文件中,则可以将以下行添加到 pycharm.sh: . $HOME/.env_local

    关于我为什么特别使用 '.' 有两点需要注意。 (而不是 'source')以及为什么我使用 '$HOME' 而不是 '~',它们在 bash 中实际上是可以互换的。 1)我注意到 pycharm.sh 使用 #!/bin/sh,我意识到在 Ubuntu 中,sh 现在指向 dash(而不是 bash)。 2) 事实证明,dash 没有“内置”源,也不会 ~ 解析到您的主目录。

    我也意识到每次升级 PyCharm 时,我都必须修改 pycharm.sh 文件,所以这并不理想。仍然比必须管理运行配置好!希望对您有所帮助。

    【讨论】:

      【解决方案4】:

      好的,我找到了更好的解决方法!

      1.在你的 virtualenv 中安装结构

      去终端和
      1. 处理你的 virtualenv 名称
      2. pip install fabric

      2。添加fabric.py

      在项目根目录下添加一个 python 文件并将其命名为“fabric.py”,
      通过下面的代码,
      并将路径变量更改为您自己的

      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)
      

      3。添加外部工具


      首选项-> 外部工具-> 点击添加按钮
      并填写以下信息

      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$
      

      screenshot

      哇,运行它

      转到您的 main.py,右键单击,找到外部名称(例如“whatever”),然后单击它
      您还可以为此外部工具添加快捷方式
      screenshot

      缺点

      这只适用于 python 2.x,因为 fabric 不支持 python 3

      【讨论】:

      • 仅供参考。在第二步中,您不应调用您的脚本 fabric.py,因为它会在第一次导入期间导致自引用。
      • 截图的链接也失效了。
      猜你喜欢
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2021-11-07
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多