python使用过程中的bug合集


问题:
在vscode中, 使用 Windows PowerShell 运行 conda activate xxx (某个环境)切换环境时报错:

If using ‘conda activate’ from a batch script, change your invocation to ‘CALL conda.bat activate’.

原因:
PowerShell 有时不好使

解决方法:
改为用 cmd 运行
在这里插入图片描述


问题:
conda install xxxx 安装遇到问题

PermissionError: [WinError 5] 拒绝访问。: 'd:\anaconda3\lib\site-packages

原因:
权限问题

解决方法:
将原来的 conda install xxxx 改成 pip install --user xxxx (可以试试 conda install --user xxxx )


问题:
linux 服务器上已经安装好了cuda,但是运行 nvcc -V 后报错:

The program ‘nvcc’ is currently not installed. You can install it by typing:
sudo apt install nvidia-cuda-toolkit

按照网上的方法,找到 cuda 的安装目录下的 lib 和 bin 所在路径(假设 lib 的路径是 /usr/local/cuda/lib ,bin 的路径是 /usr/local/cuda/bin),通过 vim ~/.bashrc 在中间(这是出错的步骤)加入路径:

export LD_LIBRARY_PATH=/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin

source ~/.bashrc 后运行 nvcc -V 后仍然报错。

原因:

因为之后又安装了新版的 python,所以 ~/.bashrc 最后又被添加了python的路径:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/snap/bin

这个增加在了最后,直接覆盖了之前写的cuda的路径,所以添加 cuda 路径一般网上的写法都是:

export PATH=$PATH:新增的bin路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:新增的lib路径

这相当于把之前的PATH和新增的路径衔接起来。并且,在后面继续添加路径时,也不要直接写 export PATH=新增路径 ,否则会覆盖之前写过的PATH路径,导致之前写的路径失效。

解决方法:
把之前新增的python路径修改为:

export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/snap/bin

避免了覆盖掉 cuda 的路径

并且,建议在之后添加路径时,不要直接用 export PATH=新增路径 而是用 export PATH=$PATH:新增路径


问题:
按照官方文档,在win10上运行 django-admin startproject mysite 遇到报错

‘django-admin’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

原因:
没有添加系统路径。

解决方法:
找到包含 django-admin.exe 的文件,然后把它所在的路径添加到系统路径里。例如:我这边是 C:\Users\xxx\AppData\Roaming\Python\Python37\Scripts,就添加系统路径。还是不行的话,就使用懒人方法,直接运行

C:\Users\xxx\AppData\Roaming\Python\Python37\Scripts\django-admin startproject mysite

问题:
试图在我的 Mac 上用 brew 安装 pyenv。首先,卡在了 updating homebrew 上。解决后,下载完 pyenv,想要用 eval "$(pyenv init -)" 添加路径又遇到警告:

WARNING: pyenv init - no longer sets PATH. Run pyenv init to see the necessary changes to make to your configuration.

解决方法:
对于卡在 updating homebrew 上,有两种方法:

  1. 直接 ctrl+C 停止更新,然后就会跳过更新,直接下载。并且可以直接关闭自动更新:

    vim ~/.bash_profile
    
    # 新增一行
    export HOMEBREW_NO_AUTO_UPDATE=true
    
  2. 更换源(感觉前面一种方法治标不治本,还是更换源吧):

    cd "$(brew --repo)"
    git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
    
    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
    brew update
    

对于警告:

WARNING: pyenv init - no longer sets PATH. Run pyenv init to see the necessary changes to make to your configuration.

是因为 pyenv 版本更新,网上的教程太老了,建议直接看pyenv的GitHub Readme官方文档,把 echo eval "$(pyenv init -)" 改为:

echo 'eval "$(pyenv init --path)"' 

这里也仅限当前时间有效,可能之后还会改动,还是以官方文档为准。


问题:
设置 pytorch 多GPU训练时,从网上复制代码

os.environ['CUDA_VISIBLE_DEVICE']='1'

改成了

os.environ['CUDA_VISIBLE_DEVICE']='2,3'

运行 n_gpu = torch.cuda.device_count() 发现仍然是4个GPU,并没有生效

解决方法:
看了半天才发现多GPU的时候是CUDA_VISIBLE_DEVICES,后面有个S
改成

os.environ['CUDA_VISIBLE_DEVICES']='2,3'

运行 n_gpu = torch.cuda.device_count() ,终于是2个GPU了

猜你喜欢

转载自blog.csdn.net/iteapoy/article/details/117921068