demucs模型的下载和运行
(1)**首先,git clone,**就在home目录(因为这是代码,不占多大空间的)
(2)根据readme的指示
For machine learning scientists
If you have anaconda installed, you can run from the root of this repository:
conda env update -f environment-cpu.yml # if you don't have GPUs
conda env update -f environment-cuda.yml # if you have GPUs
conda activate demucs
pip install -e .
This will create a demucs
environment with all the dependencies installed.
接下来详细解读一下这些命令:
当你运行 conda env update -f environment-cpu.yml
或 conda env update -f environment-cuda.yml
时,conda
会根据指定的 YAML 文件来创建或更新一个虚拟环境,并安装文件中列出的所有包。通常,这些 YAML 文件会包含需要安装的包和它们的版本信息,例如:
name: demucs
channels:
- defaults
- conda-forge
dependencies:
- python=3.8
- numpy
- scipy
- pytorch
- torchaudio
- pip
- pip:
- some-pip-package
在这种情况下,conda
会安装所有列在 dependencies
部分的包,包括通过 pip
安装的包。
那为什么还要运行 pip install -e .
呢?
- 本地包的安装:
有时候你的项目依赖于当前目录中的代码,这些代码可能在开发阶段或本地没有发布到 PyPI(Python Package Index)。在这种情况下,environment.yml
文件中不会包含这些本地代码的安装指令,因此需要使用 pip install -e .
来安装当前目录中的包。
- 动态开发:
使用 pip install -e .
安装包的可编辑模式,允许你在开发过程中随时修改代码并立即看到效果,而不需要每次修改后重新安装包。这对于调试和快速迭代非常方便。
什么叫当前目录中的包
表示当前目录,意味着 pip
会尝试安装当前目录中的 Python 包。当前目录中通常包含一个 setup.py
文件,该文件定义了包的元数据和依赖项。
以下是一个典型的 setup.py
文件示例:
from setuptools import setup, find_packages
setup(
name="mypackage",
version="0.1",
packages=find_packages(),
install_requires=[
"numpy",
"requests",
],
entry_points={
'console_scripts': [
'mycommand=mypackage.module:main_func',
],
},
)
-
name
:包的名称。 -
version
:包的版本。 -
packages
:指定要包含的包。 -
install_requires
:列出包的依赖项。 -
entry_points
:定义命令行脚本的入口。这边记录一下运行上面三条命令时遇到的问题
(1)运行第一条
conda env update -f environment-cpu.yml
时一直卡在solving environment。原因:conda有问题
解决:重新换一个conda
ubuntu的百度ai推荐的conda就可以(我的第一篇笔记有写)
(2)运行第三条
pip install -e .
时报错然后我运行
sudo pip install -e .
,发现安装成功了,就自以为OK了,其实装错地方了,因为前面加了sudo
导致demucs根本没装在虚拟环境里警示:千万不要sudo pip install -e .
那正确的解决方式是什么呢?
就是把报错信息复制给GPT,他告诉我可以用
sudo chown -R $USER:$USER /data1/demucs
这个命令,然后我用了之后重新pip install -e .
居然就成功了。