如何添加Python的模块搜索路径
发布网友
发布时间:2022-04-18 05:07
我来回答
共5个回答
懂视网
时间:2022-04-18 09:28
本篇文章给大家带来的内容是关于探索Python模块自动搜索路径,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
最近在学习python的C++扩展(pybind11),写完一个扩展模块之后,想要在自己的环境中以后都能自动导入这个模块,而不用手动去添加路径(修改sys.path)应该怎么弄?以前最开始学习Python的时候看过这块内容,然而时间长了总会记忆不清,就再回顾了一遍。
概括来说,Python的自动搜索路径是这样的:
程序的根目录
PYTHONPATH环境变量设置的目录
标准库的目录
任何能够找到的.pth文件的内容
第三方扩展的site-package目录
最终,这五个部分的拼接成为了sys.path,其中第一和第三、第五部分是自动定义的。
根目录(自动)
Python首先在根目录搜索要导入的文件。这个根目录的入口依赖于你怎么运行代码;当你运行一个程序时,这个入口就是程序运行入口(top-level script file)文件所在的目录;当你用交互式窗口期运行代码时,这个入口就是你所在的工作目录。
PYTHONPATH 目录(可配置的)
接下来,python会搜索PYTHONPATH环境变量里列出的所有目录,因为这个搜索在标准库之前,所以要小心不要覆盖一些标准库的同名模块。
标准库目录(自动)
这个没什么好说的,pyton会自动搜寻标准库模块所在的目录。
.pth文件列出的目录(可配置的)
这是用的比较少的一个python特性。它允许用户以每行一个的方式列出搜索路径,它和PYTHONPATH环境变量的不同是会在标准库路径之后搜索;而且它是针对这个python安装的,而不是针对用户的(环境变量会随着用户的不同而不同)。 那么,.pth文件应该放在哪里呢?可以通过以下代码找到.pth文件可以放置的位置:
import site
site.getsitepackages()
在我的环境中,输出如下:
['C:Python27', 'C:Python27libsite-packages']
Lib/site-package目录(自动)
最后,python会在搜索路径上自动加上site-packages目录,这一般是第三方扩展安装的地方,一般是由distutils工具发布的。
举例说明
讲了这么多,现在我们举个小栗子。我的python环境是windows7 + python 2.7。
1. 首先,我们新建一个环境变量PYTHONPATH,在里面加上目录E:python_extensions
然后,我们在C:Python27
目录下新增一个add.pth文件,里面的内容是: E:python_extensions2
最后,我们在E:python_extensions
和E:python_extensions2
目录下分别新建模块test.py
和test2.py
,里面都写了一个test
方法。
我们打开交互解释器,结果如下:
可以看到,我们可以直接导入这两个目录下的模块了。查看sys.path:
嗯,这两个路径已经自动加入sys.path变量了。
总结
本文简要回顾了python的自动搜索路径,以及如何配置一些搜索路径以使得python在启动时能够将某些目录加到搜索路径。当然,这些自动搜索路径随着python版本和实现的不同会有细微差别,但对于目前的使用来说已经够了。
热心网友
时间:2022-04-18 06:36
方法一:函数添加
1 import sys
2 查看sys.path
3 添加sys.path.append("c:\\")
方法二:修改环境变量
w用户可以修改系统环境变量PYTHONPATH
方法三:增加.pth文件,推荐!
在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了。
1 windows
c:\python27\site-packages
# 我们的学员把pth文件直接放在c:\python27
# (或其他python安装目录)目录下测试也是有效的
# 2015.9.23
2 linux(ubuntu)
/usr/local/lib/python2.7/dist-packages (note by shanql, 我是放在这个目录下有效的,所添加的目录一定要存在,不存在则会不成功)
2 linux(redhat)
/usr/lib/python2.7/site-packages
热心网友
时间:2022-04-18 07:54
将模块的绝对路径添加到Python搜索路径中就可以了 1 2 3 4 import sys print(sys.path) #显示python搜索库的路径 sys.path.append('') import numpy #然后这样就可以正常搜索到python2.6下的库
热心网友
时间:2022-04-18 09:29
一般情况下都是讲自己的类库新建一个文件夹,然后写在 PYTHONPATH中,和第三方类库分割开来。
修改lib/site.py
sys.path.append('/to/your/path)
加上这一句
热心网友
时间:2022-04-18 11:20
Python 的模块搜索路径 PYTHONPATH 类似 Java 的 CLASSPATH 由以下路径组合而成,通过更改以下 4 者其中之一都可以改变 Python 模块的默认搜索路径: 1. 当前工作目录 2. 操作系统的 PYTHONPATH 环境变量
如何添加Python的模块搜索路径
方法一:函数添加 1 import sys 2 查看sys.path 3 添加sys.path.append("c:\\")方法二:修改环境变量 w用户可以修改系统环境变量PYTHONPATH 方法三:增加.pth文件,推荐!在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了。1 windows...
python 怎样添加模块加载路径
步骤1:建立文件,可以首先建立一个文本文档,写下路径如D:\\Python\\mulib。我这里新建的文件路径的文件夹命名为“mulib”步骤2:保存文档时,将文件类型选为所有,文件名为 setpath.pth。文件名是什么无所谓,主要是只有当文档类型选为“所有文件”,才可以定义文件类型为.pth 步骤3:将保存好的文...
如何设置python模块的默认搜索路径
当导入名为spam的模块时,解释器将在当前目录中搜索名为spam.py的文件,然后在环境变量PYTHONPATH指定的目录列表中搜索。这与shell变量PATH具有相同的语法,即目录名称列表。当没有设置PYTHONPATH时,或者当没有找到文件时,搜索将继续依赖于与安装相关的默认路径;在Unix上,这通常是:/ usr / local / l...
如何在linux环境下添加python模块路径
实验成功,将脚本导入python自带的环境变量目录中是有效的,如果之前运行了python,再导入后并不用重启python就可以导入模块。3.接下来我们回归正题,如何自定义python环境变量目录。最直接的想法是把目录加到刚才的python环境变量中。可以使用sys.path.append('/.../...')。然后...
怎么在Path中添加Python路径
⒉右键单击 计算机,选择属性,之后会再单击高级系统设置,会出现一个系统属性的框。⒊单击环境变量,然后在系统变量那个框里找到path,双击后会出现编辑系统属性的框,在变量值文本框中的末尾添加“;D:\Python27_x64\”(这里是安装路径),单击确定按钮。之后一直点确定就可以了。
如何在linux环境下添加python模块路径
将模块的绝对路径添加到Python搜索路径中就可以了 1 2 3 4 import sys print(sys.path) #显示python搜索库的路径 sys.path.append('<你的python2.6下库的绝对路径>')import numpy #然后这样就可以正常搜索到python2.6下的库
如何的Python定位导入模块
1.如果导入的模块和主程序在同个目录下,直接import就行了 2.如果导入的模块是在主程序所在目录的子目录下,可以在子目录中增加一个空白的__init__.py文件,该文件使得python解释器将子目录整个也当成一个模块,然后直接通过“import 子目录.模块”导入即可。3.如果导入的模块是在主程序所在目录的父...
怎么在PyCharm中安装python的模块?
第一步:点击File,找到左边有个小改锥的settings,然后请点击它。第二步:找到settings页面下的Project spider 找到其中的Project Intreter然后进行点击。这时候页面右侧有一个小加号。请点击这个小加号。在搜索栏里面搜索自己想要安装的库,例子搜索的就是requests库。选中自己想要安装的库,点击左侧Install ...
python 导入模块问题
如果你想在自己的代码中使用这个模块,那么你必须将其添加至Python的导入检索路径(import search path)。最简单的做法如下:import syssys.path.append('/path/to/folder/containing/my_package')import my_package注意,你需要添加的是 my_package 的上一层文件夹路径,而不是 my_package 本身。原因是 my_package ...
pyinstaller打包丢失serial模块
首先,确认是否已安装pyserial模块,如果没有,通过命令行安装:bash pip install pyserial 其次,打包时可以采用--hidden-import参数,显式引入serial模块。例如,添加-p参数,指定模块搜索路径:bash pyinstaller --hidden-import=serial --path=C:\\Python39\\Lib\\site-packages --path=C:\\Users\\...