【问题标题】:PYTHONPATH on Linux [closed]Linux 上的 PYTHONPATH [关闭]
【发布时间】:2013-08-17 07:50:06
【问题描述】:

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

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

【问题讨论】:

    标签: python pythonpath


    【解决方案1】:

    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 文件(通常为 ~/.bashrc)中设置该变量。

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

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

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

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

    【讨论】:

    • 如果 Python 用户在 Ubuntu 中安装了 Python2.7、Python3.5 和 Python3.6,echo $PYTHONPATH 可以返回 :/usr/local/lib/python3.5/dist-packages:/usr/local/lib/python2.7/dist-packages:/usr/local/lib/python3.6/dist-packages
    【解决方案2】:
    1. PYTHONPATHenvironment variable
    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 点一致。

    【讨论】:

      【解决方案3】:

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

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

      我建议你学习how to package a Python module properly,也许使用this easy setup。如果您特别懒惰,可以使用cookiecutter 为您完成所有艰苦的工作。

      【讨论】:

      • 我怀疑之所以会出现反对票,是因为该问题没有直接解决 OP 的问题。现在可以了。 PYTHONPATH搞混还是个糟糕的主意
      猜你喜欢
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多