Linux 上的 PYTHONPATH

我是这方面的新手,我已经开始学习 Python 了但是我有一些问题我不能理解,

  1. PYTHONPATH (在 Ubuntu 上)到底是什么? 它是一个文件夹吗?
  2. Ubuntu 默认提供 Python,还是必须显式安装 Python?
  3. 所有模块所在的文件夹在哪里(我有很多名为 python_的文件夹) ?
  4. 如果我希望一个新的模块工作时,我的编程(如 pyopengl) ,我应该去哪里介绍所有的文件夹,我已经在文件夹下载?
  5. 回到 PYTHONPATH 问题,我如何配置 PYTHONPATH 以便开始处理我的新模块?
374428 次浏览

1) PYTHONPATH是一个环境变量,你可以设置它来添加其他的目录,python 会在这些目录中查找模块和软件包。例如:

# make python look in the foo subdirectory of your home directory for
# modules and packages
export PYTHONPATH=${PYTHONPATH}:${HOME}/foo

这里我使用 sh语法。对于其他 shell (例如 cshtcsh) ,语法将略有不同。要使其永久化,请在 shell 的 init 文件中设置变量(通常是 ~/。巴希尔)。

2) Ubuntu 已经安装了 python。安装其他(独立的) Python 版本可能是有原因的,但我发现很少有必要这样做。

3)模块所在的文件夹取决于 PYTHONPATH以及安装 python 时所设置的目录。在大多数情况下,您不应该关心已安装的内容放在哪里—— Python 知道它在哪里,并且可以找到模块。有点像发出命令 ls—— ls住在哪里?/usr/bin/bin?在99% 的情况下,您不需要关心——只需使用 ls,并为它位于 PATH上的某个位置而感到高兴,这样 shell 就可以找到它。

4)我不确定我是否明白这个问题。第三方模块通常附带安装说明。如果您按照说明操作,python 应该能够找到模块,而且您不必关心它是在哪里安装的。

5)将 PYTHONPATH配置为包含模块所在的目录,python 将能够找到模块。

  1. PYTHONPATH环境变量
  2. 是(见 https://unix.stackexchange.com/questions/24802/on-which-unix-distributions-is-python-installed-as-part-of-the-default-install)
  3. Ubuntu 上的 /usr/lib/python2.7
  4. 你不应该手动安装软件包。相反,使用 Pip。当包不在 pip 中时,它通常有一个 Setuptools安装脚本,这个脚本会将包安装到正确的位置(参见第3点)。
  5. 如果使用 pip 或 setuptools,则不需要显式设置 PYTHONPATH

如果你看一下 吡咯烷酮的说明,你会发现它们与第4点和第5点是一致的。

PYTHONPATH是一个环境变量,这些内容被添加到 sys.path中,Python 在其中查找模块。你可以设置成任何你喜欢的。

然而,做 没有PYTHONPATH混乱。通常情况下,你做错了,从长远来看,这只会给你带来麻烦。例如,虚拟环境可以做一些奇怪的事情..。

我建议你学习 如何正确打包 Python 模块,也许用 这个简单的装置。如果你特别懒,你可以使用 饼干切割机为你做所有的辛苦工作。