如何在 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.addsitedir
,sys.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】:将 Python 和 PythonPath 添加到 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.path
— PYTHONPATH
环境变量和.pth
文件。【参考方案22】:
您需要添加到您的 PYTHONPATH 变量而不是 Windows PATH 变量。
http://docs.python.org/using/windows.html
【讨论】:
以上是关于如何在 Windows 中添加到 PYTHONPATH,以便找到我的模块/包?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 中添加到 PYTHONPATH,以便找到我的模块/包?
如何在 Windows 上将 man 和 zip 添加到“git bash”安装中
如何在 ASP.NET Core 中将角色添加到 Windows 身份验证