【问题标题】:How to add to the PYTHONPATH in Windows, so it finds my modules/packages?如何在 Windows 中添加到 PYTHONPATH,以便找到我的模块/包?
【发布时间】: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 的模块

【问题讨论】:

标签: python windows environment-variables pythonpath


【解决方案1】:

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

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

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


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

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

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

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

  1. 在包含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】:

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

        1. 打开运行写入cmd

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

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

          【解决方案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 环境变量的方式。

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

            2. 转到高级系统设置。

            3. 单击环境变量。

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

            5. 选择它

            6. 点击编辑

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

            8. 点击ok,acceptar等

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

            以我的电脑为例(我有Python34

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

            希望对你有帮助。

            来自波哥大的问候

            【讨论】:

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

            PythonPythonPath 添加到 Windows 环境:

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

              1. 添加

                • PY_HOME

                  C:\Python27
                  
                • PYTHONPATH

                  %PY_HOME%\Lib;%PY_HOME%\DLLs;%PY_HOME%\Lib\lib-tk;C:\another-library
                  
              2. 追加

                • 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 版本:

            1. [右键单击]计算机>属性>高级系统设置>环境变量
            2. 点击“系统变量”下的【新建】
            3. 变量名称:PY_HOME,变量值:C:\path\to\python\version
            4. 点击[确定]
            5. 找到“路径”系统变量并点击[编辑]
            6. 将以下内容添加到现有变量中:

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

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

            作为最后的健全性检查,打开命令提示符并输入 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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-07-06
                      • 2011-08-26
                      • 1970-01-01
                      • 1970-01-01
                      • 2022-11-23
                      • 2015-09-06
                      相关资源
                      最近更新 更多