[英]Conda importing one environment.yml into another
考慮一下將具有依賴項的Python子模塊導入具有自己依賴項的項目的情況。 假設子模塊有其environment.yml
文件,而項目本身有一個environment.yml
文件。
有沒有辦法創建一個同時包含這兩個環境規范的環境,如果是,您將如何進行呢? (或者是否有更好/更優選的方式來處理這種情況?)
我猜您是同時開發子模塊和項目的人,因為依賴項仍在environment.yml
文件中。
不幸的是,如果您的子模塊依賴於conda
軟件包,那么這可能是您唯一的選擇。
# First create the project environment
$ conda env create --force -f project_environment.yml
# Then update with submodule dependencies
$ conda env update -n project-env-name --file submodule_environment.yml
這不是理想的,因為基本的期望是您導入的庫帶有它們自己的依賴項。
僅當可以通過pip
從PyPi安裝子模塊依賴項時才適用。 首先,將項目和子模塊的依賴項放入其各自的requirements.txt
文件中。
然后重組environment.yml
文件,使其看起來如下所示:
submodule_environment.yml
name: submodule-env-name
channels:
- defaults
dependencies:
- python=3.6.3 # no conda dependencies
- pip:
- -r requirements.txt # <--- submodule dependencies
project_environment.yml
name: project-env-name
channels:
- defaults
dependencies:
- python=3.6.3
- pip:
- -r requirements.txt # <--- project dependencies
- -r project/submodule/requirements.txt # <--- submodule dependencies
這樣,您可以完全忽略submodule_environment.yml
文件,然后使用單個命令創建項目環境。
$ conda env create --force -f project_environment.yml
如果您的submodule
依賴於conda
軟件包,則此方法將不起作用。 如果是這樣,那么選項1是您的最佳選擇。
假設子模塊沒有conda依賴項,那么理想的是僅從子模塊中制作一個單獨的程序包。 創建一個setup.py
並將所有依賴項放入install_requires
字段中。 這是setup.py文件的外觀模板。
打包后,您可以執行以下操作:
pip install .
pip install git+https://github.com/username/submodule.git --upgrade
pip
下的requirements.txt
或environment.yml
:
git+https://github.com/username/submodule.git#egg=submodule
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.