66

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

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

3 回答 3

60

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(例如csh, tcsh),语法会略有不同。要使其永久化,请在 shell 的 init 文件(通常为 ~/.bashrc)中设置变量。

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

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

4)我不确定我是否理解这个问题。3rd 方模块通常带有安装说明。如果您按照说明进行操作,python 应该能够找到该模块,您不必关心它的安装位置。

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

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

如果您查看pyopengl的说明,您会发现它们与第 4 点和第 5 点一致。

于 2013-08-15T06:37:35.347 回答
3

PYTHONPATH是一个环境变量,这些内容被添加到sys.pathPython 查找模块的位置。您可以将其设置为您喜欢的任何内容。

但是,不要PYTHONPATH。很多时候,你做错了,从长远来看只会给你带来麻烦。例如,虚拟环境可能会做一些奇怪的事情……

我建议您学习如何正确打包 Python 模块,也许可以使用这个简单的设置。如果您特别懒惰,可以使用cookiecutter为您完成所有艰苦的工作。

于 2013-08-15T07:32:34.137 回答