【问题标题】:Why is PyCharm removing /usr/local/bin on a Mac while using a Python virtual environment为什么 PyCharm 在使用 Python 虚拟环境时在 Mac 上删除 /usr/local/bin
【发布时间】:2016-02-28 13:30:41
【问题描述】:

在 Mac OS X El Capitan 10.11.1 上运行 在 PyCharm 5 中(这在 PyCharm 4.5 中运行良好)

import os
print("PATH:", os.environ.get("PATH"))

如果我在 PyCharm 的项目解释器设置为 System's Python:/Library/Frameworks/Python.framework/Versions/3.4/bin/python3 的情况下运行这个程序,我得到的输出如下:

PATH: /Users/agautam/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

如果我在项目解释器设置为虚拟环境/Users/agautam/work/my-awesome-py-project/venv/bin/python3 的情况下运行相同的程序,我会得到:

PATH: /usr/bin:/bin:/usr/sbin:/sbin:/Users/agautam/work/my-awesome-py-project/venv/bin

问题:是当我使用虚拟环境时,/usr/local/bin 丢失了。

以下是虚拟环境的创建方式:

import sys, platform, subprocess
from os.path import dirname, join

root_path = join(dirname(__file__), '../..')
venv_path = join(root_path, 'venv')


def build_virtual_environment():
    print("Building virtual env from Python version", sys.version)

    # Create a fresh virtual env
    import venv
    builder = venv.EnvBuilder(with_pip=True)
    builder.create(venv_path)

    # Install dependencies in new virtual env
    run_in_venv('python', ['-m', 'pip', 'install', '--upgrade', 'pip'])  # Upgrade pip itself
    run_in_venv('pip', ['install', '-r', join(root_path, 'requirements.txt')])


def run_in_venv(cmd, args):
    if platform.system() == 'Windows':
        cmd += '.exe'
        virtual_env_bin_path = r'venv/Scripts'
    else:
        virtual_env_bin_path = r'venv/bin'

    subprocess.check_call([join(root_path, virtual_env_bin_path, cmd)] + args)


if __name__ == '__main__':
    build_virtual_environment()

附加信息:从命令行运行 python 解释器产生完全相同的结果(所以它似乎是一个 pycharm 问题):

$ /Library/Frameworks/Python.framework/Versions/3.4/bin/python3
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ.get("PATH")
'/Users/agautam/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'
>>> 

$ ./venv/bin/python3
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ.get("PATH")
'/Users/agautam/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'
>>> 

任何帮助/信息/指针将不胜感激。

【问题讨论】:

  • 你有想过这个吗?
  • 不。解决方法 - 将 /usr/local/bin 添加到运行配置。
  • @AjayGautam,您能否具体说明将 X 添加到运行配置的含义?这甚至可能是一个答案......
  • @JCLeitão 在 Pycharm 中按“command + shift + a” -> 输入“edit config” -> 选择第一个结果 -> 在弹出窗口中选择“Python” -> 选择你的脚本 - > 可以在右侧看到“环境变量”,然后就可以让它工作了。顺便说一句,我尝试在“默认值”中将“/usr/bin/local”设置为默认的“环境变量”,但它不起作用。

标签: python path virtualenv pycharm osx-elcapitan


【解决方案1】:

这是作为错误报告给 JetBrains,PY-17816。现在已根据release notes 修复了 2017.1.2 版本(版本 171.4249.47)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2016-03-16
    • 2018-04-28
    • 2014-04-28
    • 2019-01-29
    • 2022-10-08
    相关资源
    最近更新 更多