【问题标题】:os x, python, homebrew -> something weird going onos x, python, homebrew -> 发生了一些奇怪的事情
【发布时间】:2016-04-22 03:57:11
【问题描述】:

希望有人可以帮助我。我遵循了一些关于为 python 开发设置新机器的指南。 (one) (two)

我几乎关注了所有内容,但我对 .bash_profile 的更改感到非常困惑

当我在 .bash_profile 中注释掉 export PATH=/usr/local/bin:$PATH 并在终端中输入 which python 时,我看到了我的期望。

which python
/usr/local/bin/python
python
Python 2.7.11 (default, Jan 22 2016, 08:29:18) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

bash_profile 中发生了什么,我将所有内容注释掉,保存并运行命令,为什么没有关系?

更重要的是,我如何获得默认安装的 python 并确保它仍然存在并且不受影响?我理解上面的版本是 Homebrew 安装的 python 是否正确?

【问题讨论】:

    标签: python macos homebrew .bash-profile


    【解决方案1】:

    .bash_profile 仅在加载 Bash shell 时为只读,因此在加载 shell 后更改此文件不会影响它。修改保存文件后要查看变化,需要重启shell或者运行source ~/.bash_profile

    修改PATH 环境变量不会影响Python 本身,它只会修改它首先被搜索到的位置,当你运行python ... 时。例如,如果您在/a/python/b/python 中安装了python,那么:

    • 如果您的PATH 设置为/a/python:/b/python:$PATH 并且您运行python ....py 实际上会执行/a/python ....py

    • 如果您的PATH 设置为/b/python:/a/python:$PATH 并且您运行python ....py 实际上会执行/b/python ....py

    如果您没有修改 PATH(例如,但在 shell 中执行 export PATH=/usr/local/bin:$PATH 之类的内容或将其添加到 .bash_profile),那么执行 which python 应该会显示默认的 python 路径。

    在您描述的情况下,它向您显示了您通过修改PATH 设置它使用的python。要查看默认设置,请注释export... 字符串,保存.bash_profile 文件并运行source ~/.bash_profile 或重新启动shell,然后才能看到which python 输出。

    【讨论】:

    • 感谢您的解释。我的问题是由于某种原因我似乎无法显示默认的 python 路径。我评论了 export 字符串,保存并运行 source ~/.bash_profile 并且仍然看到新的自制软件安装。有什么想法吗?
    • 好的,在 .bash_profile 中注释掉所有内容后,我可以打开默认 python/ which python 生成 /usr/bin/python 。现在,谁能告诉我修改PATH 以使自制python 成为默认值的最佳做法?是通过编辑 /etc/paths 还是 .bash_profile 或 .bashrc?
    • @nrksj,取决于... 987654353@ 在他/她的主目录中(例如~/.profile/~/.bash_profile)。在/etc/environment 中添加PATH 设置,在其他文件中添加export PATH=/new/path/part:$PATH。重要提示:许多系统程序依赖于系统范围的 Python,例如如果系统 Python 是 Python2,而您将其修改为 Python3 - 这可能会导致系统崩溃。因此,根据您要实现的目标,最好为单个用户进行修改。
    • 感谢您的解释。我会多考虑一下如何去做。我更有经验的同事甚至不关心自制软件之类的东西,更喜欢使用系统 python,所以也许我会这样做。
    • @nrksj,你可以做到,问题是当系统 Python 版本与你的代码所需的版本不同时,即 Python 2 和 Python 3。为了不破坏系统库,你应该使用虚拟环境,看看pyvenvvirtualenv。附:如果您对答案感到满意,您可能希望将其标记为已接受的答案。
    猜你喜欢
    • 2011-12-05
    • 2021-09-25
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多