如何在 Windows 中添加到 PYTHONPATH,以便找到我的模块/包?

Posted

技术标签:

【中文标题】如何在 Windows 中添加到 PYTHONPATH,以便找到我的模块/包?【英文标题】:How to add to the PYTHONPATH in Windows, so it finds my modules/packages? 【发布时间】:2011-04-11 17:26:42 【问题描述】:

我有一个存放我所有 Django 应用程序的目录 (C:\My_Projects)。我想将此目录添加到我的PYTHONPATH,以便我可以直接调用应用程序。

我尝试从 Windows GUI (My Computer > Properties > Advanced System Settings > Environment Variables) 将 C:\My_Projects\; 添加到我的 Windows Path 变量。但它仍然不读取 coltrane 模块并生成此错误:

错误:没有名为 coltrane 的模块

【问题讨论】:

对于“没有命名的模块”错误:***.com/questions/23417941/… 我用过site module。 如果你想在命令提示符下运行 python,这里得到了很好的回答,希望对你有帮助 ***.com/a/54618199/8253662 【参考方案1】:

这个问题需要一个正确的答案:

只需使用标准包site,它是为这项工作制作的!

这里是如何(抄袭my own answer我自己关于同一主题的问题):


    打开 Python 提示符并键入
>>> import site
>>> site.USER_SITE
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python37\\site-packages'
...

(或者,也可以致电python -m site --user-site 以获得相同的效果。)

    如果此文件夹尚不存在,请创建此文件夹:
...
>>> import os
>>> os.makedirs(site.USER_SITE)
...

(或者,在 Bash 中,makedirs -p $(python -m site --user-site) 的首选变体。)

    在包含FIND_MY_PACKAGES 内容的文件夹中手动创建一个文件sitecustomize.py(使用此文件名,否则它将不起作用),可以手动或使用类似于以下代码的内容。当然,您必须将 C:\My_Projects 更改为自定义导入位置的正确路径。
...
>>> FIND_MY_PACKAGES = """
import site
site.addsitedir(r'C:\My_Projects')
"""
>>> filename = os.path.join(site.USER_SITE, 'sitecustomize.py')
>>> with open(filename, 'w') as outfile:
...     print(FIND_MY_PACKAGES, file=outfile)

下次启动 Python 时,C:\My_Projects 会出现在您的 sys.path 中,而无需触及系统范围的设置。奖励:上述步骤也适用于 Linux!


为什么会这样?

来自documentation of standard library package site

[Then] 尝试导入名为 sitecustomize 的模块,该模块可以执行任意特定于站点的自定义。 [...]。

因此,如果您在 PYTHONPATH 的任何位置创建一个名为 sitecustomize 的模块,包站点将在 Python 启动时执行它。通过调用site.addsitedirsys.path 可以安全地扩展到您喜欢的范围内。

【讨论】:

这似乎是要走的路。一个好的、跨平台的、长期的解决方案。太棒了! 非常感谢,这是我为 VS Community 2019 找到的唯一方法! 我按照所有步骤操作,它有效,但我必须每次启动 sitecustomize.py。 @JackGriffin:你把哪个文件放在了哪里?我刚刚在 Python 3.8.8 下验证了 Windows 10 中的步骤。在我的“My_Projects”文件夹中,我放置了一个带有函数定义的dummypackage.py。在新的 (I)Python shell 中,import dummypackage 立即成功,无需人工干预。检查变量site.USER_SITE_ENABLED(必须是True);也许它在您的环境中被禁用。 @ojdo:我在 Kubuntu 21.04 上有 Python 3.9.5。可以说,我想要“公开”的文件夹包含一个 filebox.py 文件。我按照你的指示,得到了 site.USERSITE 路径,在那里创建了 customizesite.py,在你写的时候添加了文件夹。启动了 customize.py。该文件夹在 sys.path 中。**>>>import filebox**:没有错误。关闭 python 提示符并再次启动它。该文件夹不在 sys.path 中。在控制台中,如果文件夹路径是工作目录 >>> import filebox 有效。否则我得到一个 ModuleNotFoundError: No module named 'filebox'。【参考方案2】:

虽然这个问题是关于“真正的”Python,但它确实出现在“Iron Python PYTHONPATH”的网络搜索中。对于像我一样困惑的 Iron Python 用户:事实证明 Iron Python 会寻找一个名为 IRONPYTHONPATH 的环境变量。

Linux/Mac/POSIX 用户:不要忘记,Windows 不仅使用\ 作为路径分隔符,而且还使用; 作为路径分隔符,而不是:

【讨论】:

【参考方案3】:

只需将您的安装路径(例如C:\Python27\)附加系统变量中的PATH变量即可强>。然后关闭并打开您的命令行并输入“python”

【讨论】:

这回答了一个与 OP 所问的完全不同的问题。 问题不在于 DOS 用来查找命令的 PATH,而是 Python 路径,即 Python 中的 sys.path。在大多数操作系统中,Python 只使用系统环境变量PYTHONPATH,但 Windows 似乎很“特殊”。【参考方案4】:

我按照以下步骤在 Windows 10 中运行。

在环境变量下,您应该只将其添加到“系统变量”的 PATH 下,而不是“用户变量”下。这是一个很大的混乱,如果我们错过它会浪费时间。

另外,只需尝试导航到您在机器中安装 Python 的路径并将其添加到 PATH。这很有效,在我的情况下不需要添加任何其他东西。我在路径下方添加了它并且它有效。

C:\Users\YourUserName\AppData\Local\Programs\Python\Python37-32

最重要的,关闭命令提示符,重新打开然后重新输入“python”查看版本详情。需要重启命令提示符才能看到在环境变量中设置路径后的版本。

重启后,在命令提示符下输入python时,应该可以看到python提示符及以下信息:

【讨论】:

【参考方案5】:

Python 使用 PYTHONPATH 环境变量来指定可以在 Windows 上导入模块的目录列表。运行时,您可以检查 sys.path 变量以查看导入内容时将搜索哪些目录。

要从命令提示符设置此变量,请使用:set PYTHONPATH=list;of;paths

要从 PowerShell 设置此变量,请在启动 Python 之前使用:$env:PYTHONPATH=’list;of;paths’

不建议通过环境变量设置全局设置此变量,因为它可能被任何版本的 Python 使用,而不是您打算使用的版本。在the Python on Windows FAQ docs 中阅读更多信息。

【讨论】:

【参考方案6】:

您可以通过命令提示符轻松设置路径变量。

    打开运行写入cmd

    在命令窗口中写入以下内容: 设置路径=%path%;C:\python36

    按回车键。 检查写入python并输入。你会看到如图所示的python版本。

【讨论】:

【参考方案7】:

成功的最简单方法是再次运行 python 安装程序(在第一次安装之后),然后:

    选择修改。 选中您想要的可选功能,然后单击下一步。 我们开始吧,在“高级选项”步骤中,您必须看到一个选项说“将 Python 添加到环境变量”。只需选中该选项,然后单击安装。 安装完成后,添加了python环境变量,可以方便的到处使用python了。

【讨论】:

不建议通过环境变量设置全局设置此变量,因为它可能被任何版本的 Python 使用,而不是您打算使用的版本。 docs.microsoft.com/en-gb/windows/python/faqs【参考方案8】:
import sys
sys.path.append("path/to/Modules")
print sys.path

这不会在重新启动后持续存在或被转换为其他文件。但是,如果您不想对系统进行永久性修改,那就太好了。

【讨论】:

+1 设置路径的能力是运行时。虽然可以说是“hacky”,但在编写概念证明或一次性工作时,这是完美的,并且系统不会被修改。 我不同意你只需要这样做一次。我发现额外的路径在内核重新启动后不会持续存在【参考方案9】:

你知道什么在 Windows 上非常适合我。

My Computer > Properties > Advanced System Settings > Environment Variables >

只需将路径添加为 C:\Python27(或安装 python 的任何位置)

然后在系统变量下创建一个名为PythonPath 的新变量。在这个变量中我有C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;C:\other-folders-on-the-path

这是对我最有效的方法,我在提供的任何文档中都没有找到。

编辑:对于那些无法获得它的人, 请添加

C:\Python27;

随之而来。否则它将永远不会工作

【讨论】:

您可能想在路径中添加C:\Python27 @SteveKoch 我不确定——你得问问项目的维护者。我不再使用路径编辑器,因为我切换到更好的Rapid Environment Editor 将 C:\Python27\Scripts 添加到路径中也很重要,以便可以从 shell 运行已安装的脚本。 为什么要把C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk 放在PYTHONPATH 中?这些已经配置好了。脚本目录进入系统PATH。库的目录(未安装到 site-packages 或每个用户 site-packages)进入 PYTHONPATH 我还必须在我的 PATH 中包含 %PYTHONPATH%。【参考方案10】:

python 2.X 路径可以通过上述几条指令进行设置。 默认情况下,Python 3 将安装在 C:\Users\\AppData\Local\Programs\Python\Python35-32\ 所以这个路径必须添加到windows环境下的Path变量中。

【讨论】:

【参考方案11】:

可能有点晚了,但这是您将路径添加到 Windows 环境变量的方式。

    转到环境变量选项卡,您可以通过按 Windows 键 + 暂停键来执行此操作。

    转到高级系统设置。

    单击环境变量。

    在下方窗口中搜索“路径”值。

    选择它

    点击编辑

    在行尾添加您的安装文件夹和“脚本”文件夹的路径。

    点击ok,acceptar等

大功告成,从驱动器的任意位置输入 cmd 并编写 python,它应该进入 Python 程序。

以我的电脑为例(我有Python34

EXISTING_LINES;C:\Python34;C:\Python34\Scripts\

希望对你有帮助。

来自波哥大的问候

【讨论】:

确实有点晚了,因为这个答案已经在五年前提供了:-) 这里也不是真正要问的(因为问题是关于 PYTHONPATH,而不是 PATH)...... 什么是暂停。【参考方案12】:

PythonPythonPath 添加到 Windows 环境:

    打开资源管理器。 右键单击左侧导航树面板中的“计算机”。 选择上下文菜单底部的“属性”。 选择“高级系统设置” 点击高级选项卡中的“环境变量...”

    '系统变量'下:

      添加

      PY_HOME

      C:\Python27
      

      PYTHONPATH

      %PY_HOME%\Lib;%PY_HOME%\DLLs;%PY_HOME%\Lib\lib-tk;C:\another-library
      

      追加

      path

      %PY_HOME%;%PY_HOME%\Scripts\
      

【讨论】:

这是唯一对我有用的解决方案。另外,对于那些没有管理员权限的人,只需按照上面“[yourUsername] 的用户变量”下的步骤操作,它也可以正常工作。 Windows 上的 Python,现在更了解 node.js【参考方案13】:

在 Windows 上的 Python 3.4 中,当我将其添加到 PATH 环境变量 而不是 PYTHONPATH 时,它可以正常工作。就像您在 D:\Programming\Python34 中安装了 Python 3.4 一样,然后将其添加到 PATH 环境变量的末尾

;D:\Programming\Python34

关闭并重新打开命令提示符并执行“python”。它将打开python shell。这也修复了我的 Sublime 3 问题 'python 不被识别为内部或外部命令'

【讨论】:

是的,这是我唯一的解决方案(Python 3.x)。我真的不知道为什么 %PYTHONPATH% 没有在 Path 参数上解析。不需要调用 Scripts 文件夹。【参考方案14】:

Windows 7 专业版 我修改了@mongoose_za 的答案,以便更容易更改 python 版本:

    [右键单击]计算机>属性>高级系统设置>环境变量 点击“系统变量”下的【新建】 变量名称:PY_HOME,变量值:C:\path\to\python\version 点击[确定] 找到“路径”系统变量并点击[编辑]

    将以下内容添加到现有变量中:

    %PY_HOME%;%PY_HOME%\Lib;%PY_HOME%\DLLs;%PY_HOME%\Lib\lib-tk;

    单击 [确定] 关闭所有窗口。

作为最后的健全性检查,打开命令提示符并输入 python。你应该看到

>python [whatever version you are using]

如果需要切换版本,只需要修改PY_HOME变量指向正确的目录即可。如果您需要安装多个 python 版本,这更容易管理。

【讨论】:

试过了,效果很好……我建议遇到同样问题的人试试这个。 试过这个,它根本没有做任何事情。 我尝试了上面接受的答案,但没有奏效,所以我会推荐这个。 @Reihan_amn 我的意思是包含 lib、bin、libexec 等的包装目录。通常这些目录被命名为 Python[VERSION_NUMBER]/,但我也见过 python/[VERSION_NUMBER]。希望这会有所帮助 我试过这个,它对我有用。我必须做一个小的调整,即在将 Windows 10 的每个条目添加到 PATH 变量时单击“新建”。 %PY_HOME%;%PY_HOME%\Lib;%PY_HOME%\DLLs;%PY_HOME%\Lib\lib-tk; 我还需要添加 %PY_HOME%\Scripts 以便我可以访问 pip 以及我使用 pip 安装的模块,例如 pylint【参考方案15】:

对于任何尝试使用 Python 3.3+ 实现此目的的人,Windows 安装程序现在包含一个选项,可将 python.exe 添加到系统搜索路径。在the docs 中阅读更多内容。

【讨论】:

【参考方案16】:

在 python 中设置路径的更简单方法是: 单击开始>我的电脑>属性>高级系统设置>环境变量> 第二个窗口 >

选择路径 > 编辑 > 然后添加“;C:\Python27\;C:\Python27\Scripts\”

链接:http://docs.python-guide.org/en/latest/starting/install/win/

【讨论】:

更改系统路径没有任何改变(也将其删除)。但是输入 admin cmd 有效: ftype Python.File="C:\Python27\python.exe" "%1" %*【参考方案17】:

安装 ArcGIS Desktop 时,需要为 ArcPY 设置此 PYTHONPATH 变量。

PYTHONPATH=C:\arcgis\bin(您的 ArcGIS home bin)

由于某种原因,当我在 Windows 7 32 位系统上使用安装程序时,它从未设置过。

【讨论】:

【参考方案18】:

您还可以在c:\PythonX.X 文件夹或\site-packages folder 中添加包含所需目录的.pth 文件,这往往是我开发Python 包时的首选方法。

更多信息请参见here。

【讨论】:

【参考方案19】:

要增加 PYTHONPATH,运行 regedit 并导航到 KEY_LOCAL_MACHINE \SOFTWARE\Python\PythonCore 然后选择 python 的文件夹 您想使用的版本。里面是一个标有 PythonPath 的文件夹, 一个条目指定默认安装的路径 存储模块。右键单击 PythonPath 并选择创建一个新的 钥匙。您可能希望在其模块的项目之后命名密钥 它将指定的位置;这样,您可以轻松地划分 并跟踪您的路径修改。

谢谢

【讨论】:

【参考方案20】:

从 Windows 命令行:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

要永久设置 PYTHONPATH,请将该行添加到您的 autoexec.bat。或者,如果您通过系统属性编辑系统变量,它也将被永久更改。

【讨论】:

工作,但每次我打开dos我都必须设置路径。 我更喜欢使用set path=%PATH%;%PYTHONPATH%; Dos 和编辑 autoexec.bat..!我们是否突然回到了 90 年代? 在此之前,如果这为您提供了一条路径,请执行 echo %PYTHONPATH%,否则,请执行例如set PYTHONPATH=.;C:\My_python_lib 如果不这样做,windows 将按预期将 %PYTHONPATH% 扩展为空字符串,它将在 PYTHONPATH 中保留为 %PYTHONPATH% ,一切都会中断!听起来很疯狂,但这就是 win7 cmd 的工作原理......【参考方案21】:

这些解决方案有效,但它们仅适用于您机器上的代码。我会在您的代码中添加几行,如下所示:

import sys
if "C:\\My_Python_Lib" not in sys.path:
    sys.path.append("C:\\My_Python_Lib")

这应该可以解决您的问题

【讨论】:

像这样修改sys.path 是不受欢迎的,并且有充分的理由。有更好的方法来配置sys.pathPYTHONPATH 环境变量和.pth 文件。【参考方案22】:

您需要添加到您的 PYTHONPATH 变量而不是 Windows PATH 变量。

http://docs.python.org/using/windows.html

【讨论】:

以上是关于如何在 Windows 中添加到 PYTHONPATH,以便找到我的模块/包?的主要内容,如果未能解决你的问题,请参考以下文章

如何将ipa文件添加到Windows机器的iTunes中?

如何在 Windows 中添加到 PYTHONPATH,以便找到我的模块/包?

如何在 Windows 上将 man 和 zip 添加到“git bash”安装中

如何在 ASP.NET Core 中将角色添加到 Windows 身份验证

我将我的 C# 程序添加到 Windows 注册表中如何获取我在代码中右键单击的文件?

如何将我自己的 XML 配置文件添加到 Windows 服务 C#