在Mac OS X中添加Python路径

76

我认为

import sys
sys.path.append("/home/me/mydir")

将目录附加到Pythonpath中

如果我打印sys.path,我的目录就在其中。

然后我打开一个新命令行窗口,它就不在那里了。

但是Python无法导入我保存在该目录中的模块。

我做错了什么?

我读过.profile或.bash_profile会起作用。

我需要添加:

PATH="/Me//Documents/mydir:$PYTHONPATH"
export PATH

如何使它工作?


$PYTHONPATH 对我来说不存在……这正常吗? - Charlie Parker
8个回答

98

sys.path的修改只在当前Python解释器的生命周期内生效。如果你想要永久性地进行修改,你需要修改PYTHONPATH环境变量:

PYTHONPATH="/Me/Documents/mydir:$PYTHONPATH"
export PYTHONPATH
请注意,PATH是系统可执行文件的路径,完全独立于其他内容。
您可以将上述内容写入~/.bash_profile并使用source ~/.bash_profile进行引用。

3
非常感谢(忘记了)。我把它放在哪里?是放在.profile还是放在.bash_profile里?是放在MacPython之前还是之后呢?#设置MacPython 2.6的PATH #原始版本已保存在.bash_profile.pysave中 PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:${PATH}" export PATH放在它之前还是之后无所谓吗? - MacPython
1
如果您已经有了.bash_profile,那么我相信Bash会忽略.profile。这里顺序并不重要,因为它们是两个不同的环境变量。 - Matthew Flaschen
2
所以我添加了PYTHONPATH "path:$ PYTHONPATH" 导出PYTHONPATH,并在重新启动计算机后它工作了。非常感谢Matthew和Felix!! - MacPython
@JonathanRys,那是一个示例文件夹,在您的计算机中找不到它。我:您的用户名,/文档:如果您想将路径放在文档文件夹中,/mydir:示例目录。 - Rho
1
我的计算机中不存在 $PYTHONPATH,这正常吗? - Charlie Parker
显示剩余2条评论

24

在 MAC OS 上,您可以简单地使用命令 which pythonwhich python3 查找 python/python3 的位置。 (对于 Linux 也适用)

它应该会给出类似以下的内容:

对于 python

/usr/local/bin/python

对于Python3

/Library/Frameworks/Python.framework/Versions/3.9/bin/python3

将路径导出到您的bash_profile文件中

在终端中输入

sudo nano ~/.bash_profile

输入您的密码并粘贴以下行

PYTHONPATH="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3"
export PYTHONPATH

按下control + x退出,并在被询问是否保存时按下y进行保存

按下“回车”返回终端窗口

使用以下命令从终端中获取源代码:

source ~/.bash_profile

现在应该更新Python3的路径!!


11

我不确定为什么Matthew的解决方案对我无效(可能是因为我使用的是OSX10.8,或者与MacPorts有关)。但我在 ~/.profile文件的末尾添加了以下内容:

export PYTHONPATH=/path/to/dir:$PYTHONPATH

我的目录现在在Python路径上 -

my-macbook:~ aidan$ python
Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/path/to/dir', ...  

我可以从那个目录导入模块。


1
在 Mac Osx 终端中,如果我只写 python,则会进入 Python 2.7,如果我写 python3.6,则会打开版本 3.6。有什么方法可以将 python 指向 python3.6 吗? - Sunny Gupta
1
你需要在你的 .bash_profile 中创建一个别名。 - Samantha Garcia
$PYTHONPATH 对我来说不存在...这正常吗? - Charlie Parker

2
在MacOS Big Surf中,添加"export"的文件是$HOME/.zprofile
因此,以下内容可以将PYTHONPATH添加到您的Mac Big Surf环境变量中:
export PYTHONPATH=$HOME/my_folder

如果该文件不存在,请在$HOME中创建它,通常是/Users/my_user_name
文件名的更改是因为MacOS Big Surf的默认shell是zsh而不是bash

2

Mathew的回答适用于终端python shell,但是在我的情况下,它在IDLE shell上没有起作用,因为在我替换所有版本的python之前,存在许多版本。

  1. 在终端中,输入 cd /Applications/Python\ 2.7/IDLE.app/Contents/Resources/
  2. 然后输入 sudo nano idlemain.py,如果需要密码,请输入。
  3. os.chdir(os.path.expanduser('~/Documents')) 这一行后面,我添加了 sys.path.append("/Users/admin/Downloads....") 注意:将引号中的内容替换为要添加Python模块所在的目录
  4. 按ctrl+x保存更改,然后回车 现在打开idle并尝试导入Python模块,对我来说没有错误!!!

2

设置$PYTHONPATH环境变量似乎不会影响Mac上Spyder IDE的iPython终端。但是,Spyder的应用程序菜单中包含一个“PYTHONPATH管理器”。在这里添加我的路径解决了我的问题。 “PYTHONPATH管理器”还跨应用程序重启保持不变。

这只适用于Mac,因为在我的Windows PC上设置PYTHONPATH环境变量会产生预期行为(可以找到模块),而无需使用Spyder中的PYTHONPATH管理器。


1

在位于/Users/your_username/.zshrc.zshrc文件中,我添加了以下行:export PYTHONPATH="${PYTHONPATH}:/your/path"并保存该文件。

如果该文件不存在,请创建一个无名称的.txt文件并将其扩展名更改为.zshrc。它是一个隐藏文件,因此您需要按下cmd+shift+.才能看到它。

我正在使用macOS Monterey操作系统。


1
它对我的Mac(也适用于Monterey)和M1芯片组非常有用。 - nosequeweaponer
将PYTHONPATH导出为"${PYTHONPATH}:/opt/homebrew/opt/python@3.11/libexec/bin"。 - nosequeweaponer

0
看了之前的回答并自己尝试了一下。但大部分都是无用的。
在终端中输入时,Python 默认会使用 2.7 版本,而所有新的模块都是针对 v3.x 的,所以只需输入:
python3 /path/to/file/main.py

这将最终在Python 3中运行您的文件,并且来自安装程序包的所有导入都将正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接