【问题标题】:Adding folder to Python's path permanently将文件夹永久添加到 Python 的路径
【发布时间】:2011-04-12 22:37:53
【问题描述】:

我用 python 编写了一个库,我希望它驻留在文件系统上的一个公共位置。

从我的脚本中,我只想做:

>>> import mylib

现在我明白,为了做到这一点,我可以这样做:

>>> import sys
>>> sys.path.append(r'C:\MyFolder\MySubFolder')
>>> import mylib

但我不想每次都这样做。

问题是:如何将文件夹永久添加到 python 的 sys.path 中?我想这将是一个环境变量,但我找不到它。

看起来应该很容易,但我不知道该怎么做。

【问题讨论】:

    标签: python


    【解决方案1】:

    PYTHONPATH 环境变量会做到这一点。

    【讨论】:

    • 完美。这就是我一直在寻找的。​​span>
    • 它适用于 linux 吗?我将“PYTHONPATH=~/pythons/”添加到我的 .zshrc 中(echo $PYTHONPATH 也返回它)。然后我打印 sys.path 并且它不存在。 ://
    • 好的,它可以在 linux 中运行。我的 .zshrc 中没有包含命令“导出”。这很奇怪,因为我正在更改 $PATH 并且没有必要“导出”它。有什么想法吗?
    • 您可能需要将其设置为系统或用户环境变量。在 Windows 10 中,您可以在开始菜单中键入环境,选择环境变量,然后按下同名按钮。您可能需要创建变量。
    【解决方案2】:

    根据您在示例中提供的路径推断,这是在 Windows 中设置 PYTHONPATH 变量的教程: http://docs.python.org/using/windows.html#excursus-setting-environment-variables

    【讨论】:

      【解决方案3】:

      另一种可能性是更改sitecustomize.py 中的sys.path,这是一个作为Python 启动时间加载的脚本。 (它可以放在您现有路径上的任何位置,并且可以执行您喜欢的任何设置任务;我也用它来设置带有 readline 的选项卡完成。)

      site 模块提供了一种方法来处理添加到 sys.path 而不重复和 .pth 文件:

      import site
      site.addsitedir(r'C:\MyFolder\MySubFolder')
      

      【讨论】:

      • 如果将文件添加到当前路径是一种选择,我为什么还要费心尝试更改路径呢?更糟糕的是,是什么让我想在我编写的每一个 python 脚本中添加这一行?抱歉,伙计……不是很优雅。
      • @Stargazer712: 呃...sitecustomize.py 由 Python 自动运行。您不必为每个 Python 脚本添加一行。这就是重点。
      • 也许这是一个不言而喻的要求,即使用典型的安装程序安装此库,并且修改环境变量比编辑文件要容易得多(并且更像事​​务)。
      • 啊,如果是这样的话:在 Python 安装的 site-packages 文件夹中放置一个 .pth 文件,其中包含外部文件夹的路径。这比使用 PYTHONPATH 或 sitecustomize 更可靠。 (如果你需要一个外部目录......对于一个“典型”库,通常 distutils/setuptools 会负责将它放在适当的位置。)
      • @bobince 您可以粘贴 site.py 文件吗?我对完成和其他方面很感兴趣。
      【解决方案4】:

      我不知道它有多通用,但我有一个“usercustomize”文件,在启动我的 shell 时会读取该文件。也许这只是因为我是一个新手,因为“环境变量”听起来很可怕......无论如何,这就是我永久修改我的 sys.path 的方式

      但如前所述,我不知道它有多笼统。我有 python 2.7.3,在 windows 7 上安装了 python(x,y)。这个文件在

      C:>Users>Me>Appdata>Roaming>Python>Python27>sitepackages>(小心,Appdata是隐藏文件夹)

      如前所述,该文件是“usercustomize.py”,在该文件中没有什么特别之处。就我而言,只有我的 3 个导入路径:

      import sys
      sys.path.append('C:\\Users\\blablabla\\LPlot')
      sys.path.append('C:\\Users\\bliblibli\\MTSim')
      sys.path.append('C:\\Users\\blobloblo\\XP')
      

      希望它也有帮助...如果没有,请不要打我,我是 100% 新手。或者说 99.99%

      【讨论】:

      • hmmm 实际上在启动我的控制台时它不仅仅是“读取”,因为当我启动它时实际上还没有导入 sys...无论如何,我的 3 个文件夹永久在我的 sys.path 中...所以它以某种方式工作......
      • 欢迎来到 StackOverflow!您提供帮助的愿望是值得称赞的,但是当您不确定答案是否正确时,您不应该发布问题的答案。如果你不得不以“我不知道它有多笼统”作为你的答案,这表明你还没有足够的经验来回答这个问题。此外,这个问题是近三年前提出(并回答)的。添加另一个答案不太可能帮助最初的提问者,他现在已经转移到其他主题了。 :-)
      • 对不起...但实际上我一直在寻找一个答案,就像我放了一天一样;因为我知道这个文件必须存在于某个地方,直到我再次找到它(我过去已经使用过它,但现在找不到它了)。所以我想也许它对其他人有用。而且我不想为它开一个新话题,当这个话题如此相似时......
      猜你喜欢
      • 2012-08-28
      • 2013-12-22
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 2023-02-16
      • 2012-05-18
      • 1970-01-01
      • 2018-04-14
      相关资源
      最近更新 更多