Python 包管理 Python导出requirements.txt
1 pipreqs . --encoding=utf8 --force
安装依赖
1 pip install -r requirements.txt
离线安装
1 pip install psutil-5 .6.7 -cp38-cp38-win_amd64 .whl
手动指定安装源
1 2 pip install jieba -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host mirrors.aliyun.com
python安装包指定源并添加信任
1 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
删除依赖
安装旧版本包 先去官网https://pypi.org/找到对应的包,然后选择历史版本。
下载whl文件,使用离线安装。
打包应用程序 1 pyinstaller -F -i icon.ico main.py
报错:error: Unable to find vcvarsall.bat
参考知乎
如果你用的是 Anaconda,那么安装下 libpython 就能解决
1 conda install -c anaconda libpython
打包脚本
1 2 3 4 5 6 pyinstaller -F main.py --key ea3FijqE0fUWnn0Hq0Px del *.c *.spec rmdir build /Q /S timeout /nobreak /t 1 cd dist ren main.exe Annotate_word_files.exe
requests乱码 1 response.encoding = response.apparent_encoding
conda 安装conda 1 2 3 4 5 6 7 https://www.anaconda.com/products/distribution wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh h wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh bash Anaconda3-2022.10-Linux-x86_64.sh source ~/.bashrc
conda换源 1 2 3 4 5 6 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes
恢复官方源:
1 conda config --remove-key channels
查看安装了哪些包
查看当前存在哪些虚拟环境 1 2 conda env list conda info -e
检查更新当前conda
Python创建虚拟环境 1 2 conda create -n m python=3.9 anaconda命令创建python版本为x.x,名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。
实例
1 conda create -n dhdf python=3.9
导出环境为配置文件
1 conda env export > environment.yaml
加载配置文件
1 conda env create -f environment.yaml
激活或者切换虚拟环境 打开命令行,输入python –version检查当前 python 版本。
1 2 Linux: source activate your_env_nam Windows: conda activate your_env_name
切换失败: 若命令行首部不显示当前虚拟环境名称,正常的应形如(base) PS C:\Users\Administrator>
。
执行命令
关闭后重新打开powershell,若在命令⾏最前⾯出现“(base)”,则成功,可输⼊conda activate envs_name 命令测试。
否则,若出现红⾊如下警告提⽰:
1 ⽆法加载⽂件C:\XXX\WindowsPowerShell\profile.ps1,因为在此系统上禁⽌运⾏脚本
执⾏命令:
若回复 Restricted,表⽰状态是禁⽌的。
执⾏命令:
1 set-ExecutionPolicy RemoteSigned
将出现如下⼏个选项,输⼊ Y 并回车,设置完毕。
重新打开powershell,即可看到命令⾏开头有“(base)”,输⼊conda activate envs_name 命令即可激活相应的虚拟环境。
关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本) 1 2 3 deactivate env_name 或者`activate root`切回root环境 Linux下:source deactivate
删除虚拟环境 1 conda remove -n novelai --all -y
实例:
1 conda remove -n exe --all -y
备份和恢复虚拟环境 备份:
1 2 3 4 conda activate mlagents conda-env export > mlagents.yml conda deactivate conda remove -n torch --all -y
恢复:
1 conda env create -f mlagents.yml
Python换源 1 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
国内源列表:
1 2 3 4 5 6 7 8 9 10 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/ 官方: https://pypi.org/simple/ https://pypi.python.org/pypi
安装对应CUDA版本的pytorch 1 2 3 4 5 6 7 8 9 # 查看CUDA版本 nvcc --version # 或者 nvidia-smi # (nvidia-smi -L 显示显卡型号) pip install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cu117 # 或者 conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch-nightly -c nvidia
conda安装库的时候报错 1 2 3 CondaVerificationError: The package for scipy located at /home/lxf/.conda/pkgs/scipy-1.3.1-py37h921218d_1 appears to be corrupted. The path 'lib/python3.7/site-packages/scipy/stats/_continuous_distns.py' specified in the package manifest cannot be found.
解决:
1 conda clean --packages --tarballs
安装GYM 1 2 3 4 5 pip uninstall gym pip install gym==0.13 pip install gym[atari] python -m atari_py.import_roms C:/E/fast_access/Roms pip install gym[accept-rom-license]
conda清理空间 1 2 3 conda clean -p conda clean -t conda clean -y --all
pip清理:
进入%LocalAppData%\pip\Cache
,删除全部内容。
检测Pytorch是否可以连接CUDA 1 2 3 4 5 6 7 8 9 import torchprint ('CUDA版本:' , torch.version.cuda)print ('Pytorch版本:' , torch.__version__)print ('显卡是否可用:' , '可用' if (torch.cuda.is_available()) else '不可用' )print ('显卡数量:' , torch.cuda.device_count())print ('是否支持BF16数字格式:' , '支持' if (torch.cuda.is_bf16_supported()) else '不支持' )print ('当前显卡型号:' , torch.cuda.get_device_name())print ('当前显卡的CUDA算力:' , torch.cuda.get_device_capability())
安装ipykernel 1 conda install -n t ipykernel --update-deps --force-reinstall
安装python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 wget http://npm.taobao.org/mirrors/python/3.9.0/Python-3.9.0.tgz 或者https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz tar -zxvf Python-3.9.0.tgz cd Python-3.9.0 ./configure --with-ssl --prefix=/usr/local/python-3.9.0 make sudo make install // 创建软连接 sudo ln -s /usr/local/python-3.9.0/bin/python3 /usr/bin/python39 sudo ln -s /usr/local/python-3.9.0/bin/pip3 /usr/bin/pip39 # 配置环境变量 sudo vim ~/.bash_profile 或者 sudo vim ~/.zsh_profile # 添加一行: export PATH=${PATH}:/usr/local/python-3.9.0/bin # 退出vim,执行以下命令 source ~/.bash_profile 或 source ~/.zsh_profile
1 sudo rm /usr/bin/python39 //删除软连接
ModuleNotFoundError: No module named ‘_ctypes’的解决方案 安装外部函数库(libffi)
1 yum install libffi-devel -y
重新安装python
查看openssl安装包,发现缺少openssl-devel包
1 2 3 4 [root@localhost ~]# rpm -aq|grep openssl openssl-0.9.8e-20.el5 openssl-0.9.8e-20.el5 [root@localhost ~]#
yum安装openssl-devel
1 [root@localhost ~]# yum install openssl-devel -y
查看安装结果
1 2 3 4 5 [root@localhost ~]# rpm -aq|grep openssl openssl-0.9.8e-26.el5_9.1 openssl-0.9.8e-26.el5_9.1 openssl-devel-0.9.8e-26.el5_9.1 openssl-devel-0.9.8e-26.el5_9.1
重新对python进行编译安装
1 sudo cp /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/python-3.9.8/lib/python3.9/lib-dynload/
知识点 可变长度参数 有def func(*p)
和def func(**p)
两种形式,前者可以接收任意多个位置参数并放入元组p中,后者可以接收任意多个关键参数并放入字典p中,元组或字典中元素数量取决于实参的数量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 def f (*p ): print (p) def g (**p ): print (p) f(1 , 2 , 3 ) g(a=1 , b=2 , c=3 ) out: (1 , 2 , 3 ) {'a' : 1 , 'b' : 2 , 'c' : 3 }
闭包作用域(enclosing scope) 在Python中允许嵌套定义函数,也就是一个函数的定义中可以再定义函数。在内层函数中可以直接使用父函数中局部变量的值,但是如果要在内层函数中修改父函数中局部变量的值,必须使用关键字nonlocal
声明该变量绑定到距离最近的父函数中已经存在的局部变量。
星号表达式(star expression) 也属于序列解包的用法,在可迭代对象前面加一个星号表示把其中的元素都取出来,常见于把可迭代对象中的全部元素作为函数的位置参数的场合,例如print( ‘abc’)。
1 2 3 4 5 6 7 8 9 10 print (*'abc' , sep='-' , end='\n' , flush=True , file=open ('in.txt' , 'w' ))def f (*x ): print (x) f(*'abc' ) out: a-b-c ('a' , 'b' , 'c' )
好用的库 loguru 1 2 3 4 5 6 7 8 9 10 11 12 13 14 from loguru import loggerlogger.debug('这是一条debug测试信息' ) logger.info('这是一条info测试信息' ) logger.warning('这是一条warning测试信息' ) logger.error('这是一条error测试信息' ) 日志输入到文件 from loguru import logger logger.add('runlog.log' .encoding='utf-8' ) logger.debug('这是一条debug测试信息' ) logger.info('这是一条info测试信息' ) logger.warning('这是一条warning测试信息' ) logger.error('这是一条error测试信息' )
Python调用C++ 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream> using namespace std;class TestLib { public : void display () { cout << "First display" << endl; } void display (int a) { cout << "Second display:" << a << endl; } }; extern "C" {TestLib obj; void display () { obj.display (); }void display_int (int a) { obj.display (a); }}
1 g++ -o openMPClass.so -shared -fPIC openMPClass.cpp
1 2 3 4 5 6 7 8 import ctypesdll = ctypes.cdll.LoadLibrary lib = dll('./libpycallcpp.so' ) lib.display() lib.display_int(0 ) ERROR: Could not find a version that satisfies the requirement scikit-image (from torchvideotransforms) (from versions: none) ERROR: No matching distribution found for scikit-image
错误解决 1 2 3 4 5 6 If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. If you cannot immediately regenerate your protos, some other possible workarounds are: 1. Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower). More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
解决方法:
1 2 3 4 5 6 7 8 9 pip uninstall tensorboard -y pip install tensorboard==1.15 pip install protobuf==3.19.0 pip uninstall pillow -y pip install pillow conda uninstall pillow -y conda install pillow