说明:这是我的学习笔记,很多内容转自网络,请查阅文章末尾的参考资料。
文章目录
Python是一种 解释型、面向对象、动态数据类型的高级程序设计语言。Python最具特色的就是 使用缩进来表示代码块。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
准备工作
安装Anaconda
- 查看conda环境
conda env list
- 创建/删除conda环境
conda create -n langchain2 python=3.8
conda remove --name langchain2 --all
危险:可以导出所有的第三方库至文件列表, 然后按照该列表卸载所有库
pip list
pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
- 从已有的环境中复制新的conda环境
conda create --name new_name --clone old_name
注意:如果是跨电脑复制,可以从源电脑导出配置,然后在目标电脑利用这个配置创建新环境
conda activate xxx
conda env export > xxx.yml
...
conda env create -f xxx.yml
- 进入/退出conda环境
conda activate langchain2
...
conda deactivate
安装venv
如果无法使用Anaconda,可以使用Python自己提供的虚拟环境venv
cd ~
mkdir .venv
cd .venv
python3.11 -m venv .
可以使用如下命令进入/退出venv环境
source ~/.venv/bin/activate
...
deactivate
更多内容可以参考廖雪峰的venv教程
安装Python
- 查看Python的版本
python --version
python -V
- 查看Python的安装位置
which python
python -c "import sys; print(sys.executable)"
python -c "import os; print(os.sys.executable)"
- 查看/修改Python的搜索路径
python -c "import sys; print(sys.path)"
import sys
sys.path.append('/home/someone/')
注意:我们也在命令窗口中添加路径 (这是默认的Python模块搜索路径,它的格式和系统PATH是一样的)。但是,这种方法只在当前命令窗口生效,即如果打开一个新的Terminal 窗口,定位到当前目录,打印PYTHONPATH 是没有刚才加入的路径的.
export PYTHONPATH=$PYTHONPATH:/home/someone
安装Python第三方库
- 安装 graphviz (MacOS)
brew install graphviz
pip install graphviz
- 更新 numpy 以及查看版本和安装位置
pip list | grep numpy
pip install --upgrade numpy
python -c "import numpy; print(numpy.version.version)"
python -c "import numpy; print(numpy.__version__)"
python -c "import numpy; print(numpy.__file__)"
- 在conda环境中,安装LangChain开发包
pip install langchain==0.2.0
pip install langchain-community
pip install langchain-openai
pip install langchain-huggingface
pip install faiss-cpu
pip install sentence-transformers
pip install docx2txt
pip install python-dotenv
pip install ragas==0.1.7
注意:不要使用 pip install ragas==0.0.22 (不能指定 llm & embedding)
安装完成后,版本如下所示
$ pip list | grep -e lang -e openai -e transformers -e ragas
langchain 0.2.0
langchain-community 0.2.4
langchain-core 0.2.43
langchain-huggingface 0.0.3
langchain-openai 0.1.25
langchain-text-splitters 0.2.4
langsmith 0.1.145
openai 1.55.0
ragas 0.1.7
sentence-transformers 3.2.1
transformers 4.46.3
Python环境的备份和复制
$ pip freeze > requirements.txt
...
$ pip install -r requirements.txt
工作模式
交互式编程
命令行中输入 Python 命令即可启动交互式编程
$ python
Python 3.8.20 (default, Oct 3 2024, 10:25:41)
[Clang 14.0.6 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
脚本式编程
将以下的源代码拷贝至test.py文件中。
print("Hello, Python!");
这里,假设你已经设置了Python解释器PATH变量。使用以下命令运行程序:
$ python test.py
输出结果:
Hello, Python!
让我们尝试另一种方式来执行Python脚本。修改test.py文件,如下所示:
#!/usr/bin/python
print("Hello, Python!");
这里,假定您的Python解释器在/usr/bin目录中,使用以下命令执行脚本:
$ chmod +x test.py # 脚本文件添加可执行权限
$./test.py
输出结果:
Hello, Python!
基本概念
Python字符串
-
使用单引号(')
你可以用单引号指示字符串,就如同’Quote me on this’这样。所有的空白,即空格和制表符都照原样保留。 -
使用双引号(“)
在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What’s your name?”。 -
使用三引号(‘’'或"“”)
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。
- 字符串查找
- find()方法:
info = 'abca'
print(info.find('a')) ##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
info = 'abca'
print(info.find('a',1)) ##从下标1开始,查找在字符串里第一个出现的子串:返回结果3
info = 'abca'
print(info.find('333')) ##返回-1,查找不到返回-1
- index()方法:
python的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1
info = 'abca'
print(info.index('a'))
print(info.index('33'))
- 字符串翻转
通过步进反转[::-1]
a = 'abcd'
b = a[::-1]##[::-1]通过步进反转
print(b)
Python列表
List(列表) 是 Python 中使用最频繁的数据类型。列表用[ ]标识。
列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。加号(+)是列表连接运算符,星号(*)是重复操作。
Python元组
元组是另一个数据类型,类似于List(列表)。元组用( )标识。
元组内部元素用逗号隔开。但是元素不能二次赋值,相当于只读列表。
Python字典
字典(dictionary) 用{ }标识。字典由索引(key)和它对应的值value组成。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。列表是有序的对象结合,字典是无序的对象集合。