Python常见问题指南
Published:
Python常见问题与解决方案
pip下载时指定安装目录
问题背景:在日常coding时,我们经常发现pip默认的下载路径已经没有存储空间了。 这时需要我们为pip install指定安装目录。
在用conda配置环境时,我们可以指定prefix参数,使得环境安装的位置不是默认的.conda文件夹。 具体而言,
conda create --prefix /tmp/test-env python=3.8
该代码使得环境test-env安装在/tmp文件夹下。 pip install命令一般有默认的安装目录,通过命令
python -m site
来查看。也可以通过制定target参数,例如
pip install --target=<path> <pkg_name>
一般情况下,path以site-packages为结尾。 conda install时,也有prefix选项。
conda install --prefix=~/pyenv/py36 <pkg>
这里的py36指的是环境名称。 其他诸如.condarc设置,参考这篇文章。
Matplotlib.pyplot中文显示乱码的解决方法(内核代码修改)
首先打开终端,输入python进入shell
>>> import matplotlib
>>> print(matplotlib.matplotlib_fname())
/Users/walden/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc
随意打开一个文件夹,输入shift+cmd+G,将上文的输出拷贝并粘贴于此,进入mpl-data文件夹
这里有两个需要更改的文件与文件夹:fonts文件夹与matplotlibrc配置文件。
在对fonts文件夹修改前,打开【字体册】应用程序,找到【黑体-简】的字体,并在Finder中显示。
系统打开以下文件夹:
随意拷贝其中的一份文件,然后打开刚才的fonts文件夹。
在fonts文件夹下打开fonts文件夹,将刚才的字体拷贝进来。
打开matplotlibrc文件,这里记载着所有的配置。每一项的冒号后,按顺序排列应选择的
在font.serif后,添加刚刚添加进来的字体名称(这个名称可能和文件名不一样!因此要到网上查一下)
然后保存退出,matplotlib就可以正常调用中文了。
备选方案
plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签
在smoothNLP的github主页上也有相应解决方案
设置Matplotlib.pyplot支持中文
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [1,4,9,16,25]
#调用绘制的plot方法
plt.plot(x, y, linewidth=5)
plt.xlabel('x')
plt.ylabel('y=x^2')
#设置支持中文
plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签
#添加标题
plt.title('多个点绘制折线图') #会出现乱码
#显示绘制的图
plt.show()
如何利用python编写GUI界面
做项目用wxpython库编写GUI比较好,所以我导入该库,并尝试直接python code.py启动进程。
但是呢,终端报错:需要获得屏幕的权限。这也没告诉我怎么给他权限啊!
于是我查资料,发现bin下不仅有python命令,还有pythonw命令,这个是自动获得屏幕权限的命令。
> /Users/walden/opt/anaconda3/bin/pythonw /Users/walden/Desktop/AI_Project/GUI_code.py
关于如何使用Intel显卡跑DL模型的解决方案
使用keras模型时,由于macOS系统不支持CUDA,因此只能用cpu龟速跑代码,这好亏啊。
因此,使用plainML库,为keras设置他们的backend,否则还是会使用只支持CPU的Tensorflow,这样就能用自己的显卡跑模型了。
在编写keras代码前,需要加上以下代码:
import plaidml.keras
plaidml.keras.install_backend()
import os
os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"
pip下载慢
参考https://learnku.com/python/wikis/23003
代码如下:
mkdir ~/.pip
cd ~/.pip
touch pip.conf
vi ~/.pip/pip.conf
在这个文件里添加以下内容:
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host = pypi.douban.com
以上为豆瓣的镜像源。
实测,针对不同版本的pip(例如我就用了py3.6和py3.8两个版本),都能成功访问该镜像源并进行下载。
或者,在pip install时,添加以下参数:
pip install <pkg> -i https://pypi.tuna.tsinghua.edu.cn/simple
命令行安装python的方法
在服务器上,python的版本往往很低,因此我想通过命令行下载新版本的python。
在服务器终端运行:
> wget --no-check-certificate https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz
> tar -xzf Python-3.8.6.tgz
> cd Python-3.8.6
> ./configure
> make
> sudo make install
如果要安装pip,则
> curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
> sudo python3 get-pip.py
清除已下载但未安装的python包(节省空间)
pip cache purge
将python包安装在其他目录的方法
在使用服务器时,默认的安装目录存储空间可能不足,因此我们需要在其他目录创建新环境。
在空闲存储空间足够的目录之下(例如data/)安装Anaconda:
bash Anaconda3-5.3.0-Linux-x86_64.sh
安装之后,shell会提示是否安装在默认目录下:(Anaconda3 will now be installed into this location:) 这里需要填入需要安装的位置,如/data/zhaoheng_huang/anaconda3 此外shell还会提示:是否将conda命令加入bashrc. 如果这里选择yes,则在~/.bashrc中会添加conda init代码段。 这样我们就可以通过which conda找到conda对应的路径文件
(base) douzc@inspur-NF5468M6:/data/zhaoheng_huang/CABS$ which conda
/data/shuting_wang/anaconda3/bin/conda
为了使用方便,多个人使用同一个号时,将第三方库保存在其中一个人的目录下即可(否则conda命令无法指明是哪位同学的)。 创建一个新环境:
conda create -n cags python=3.8
删除多余的环境:
conda env remove -p /home/douzc/anaconda3/envs/cagsdp
计算平台conda升级C++
(下列示例以学号u2021000178为参考)
Step 1:
激活环境
conda install gcc_linux-64
conda install gxx_linux-64
Step2:
ln -s /home/u2021000178/.conda/envs/llm/bin/x86_64-conda-linux-gnu-cc /home/u2021000178/.conda/envs/llm/bin/gcc
ln -s /home/u2021000178/.conda/envs/llm/bin/x86_64-conda_cos7-linux-gnu-g++ /home/u2021000178/.conda/envs/llm/bin/g++
ln -s /home/u2021000178/.conda/envs/llm/bin/x86_64-conda_cos7-linux-gnu-c++ /home/u2021000178/.conda/envs/llm/bin/c++
Step3:
Conda deactivate
Conda activate xxx
conda install gcc_linux-64
conda install gxx_linux-64
step4:
Check gcc -v
Check g++ -v
是不是11.2.0