Int*_*rer 14 python pip requirements.txt conda python-packaging
我有一个environment.yml文件,但不想使用 Conda:
name: foo
channels:
- defaults
dependencies:
- matplotlib=2.2.2
Run Code Online (Sandbox Code Playgroud)
是否可以像文件一样pip安装依赖项?environment.ymlrequirements.txt
我尝试过pip install -r environment.yml,但它不适用于pip==22.1.2.
Ahm*_*med 15
基于Beni的实现,我只是想调整一下代码,因为它有很多错误;
import os
import yaml
with open("environment.yaml") as file_handle:
environment_data = yaml.safe_load(file_handle)
for dependency in environment_data["dependencies"]:
if isinstance(dependency, dict):
for lib in dependency['pip']:
os.system(f"pip install {lib}")
Run Code Online (Sandbox Code Playgroud)
小智 7
我已经实施了布莱恩在评论中建议的内容。
这将转换environment.yaml为requirements.txt:
import yaml
with open("environment.yaml") as file_handle:
environment_data = yaml.load(file_handle)
with open("requirements.txt", "w") as file_handle:
for dependency in environment_data["dependencies"]:
package_name, package_version = dependency.split("=")
file_handle.write("{} == {}".format(package_name, package_version))
Run Code Online (Sandbox Code Playgroud)
这将直接使用以下命令安装依赖项pip:
import os
import yaml
with open("environment.yaml") as file_handle:
environment_data = yaml.load(file_handle)
for dependency in environment_data["dependencies"]:
package_name, package_version = dependency.split("=")
os.system("pip install {}=={}".format(package_name, package_version))
Run Code Online (Sandbox Code Playgroud)
注意:为了简单起见,我省略了错误处理和包定义的任何其他变体(例如,大于或等于某个版本的包版本的规范)。
第一个答案提出了重要的一点:没有直接转换,因为 Conda 是通用包管理器,因此包含其他包。此外,Conda 包通常可以有不同的名称。所提出的解析解决方案都没有涵盖这种情况。
就我个人而言,我认为最有效的完整方法是使用 Mamba 重新创建环境,然后pip在环境中使用转储出合法的requirements.txt.
# use mamba, not conda
mamba env create -n foo -f environment.yaml
mamba install -yn foo pip
mamba run -n foo pip list --format freeze > requirements.txt
mamba env remove -n foo
Run Code Online (Sandbox Code Playgroud)
也就是说,不要想太多并使用手头的可靠工具。
| 归档时间: |
|
| 查看次数: |
14691 次 |
| 最近记录: |