簡體   English   中英

Conda將一個環境導入到另一個環境

[英]Conda importing one environment.yml into another

考慮一下將具有依賴項的Python子模塊導入具有自己依賴項的項目的情況。 假設子模塊有其environment.yml文件,而項目本身有一個environment.yml文件。

有沒有辦法創建一個同時包含這兩個環境規范的環境,如果是,您將如何進行呢? (或者是否有更好/更優選的方式來處理這種情況?)

我猜您是同時開發子模塊和項目的人,因為依賴項仍在environment.yml文件中。

選項1:使用子模塊的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

這不是理想的,因為基本的期望是您導入的庫帶有它們自己的依賴項。

選項2:將依賴項放入相應的requirements.txt文件中

僅當可以通過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是您的最佳選擇。

選項3:打包子模塊(理想)

假設子模塊沒有conda依賴項,那么理想的是僅從子模塊中制作一個單獨的程序包。 創建一個setup.py並將所有依賴項放入install_requires字段中。 這是setup.py文件的外觀模板。

打包后,您可以執行以下操作:

  • 使用以下命令在本地安裝:
    • pip install .
  • 上載到github或bitbucket並使用以下方式安裝:
    • pip install git+https://github.com/username/submodule.git --upgrade
  • 上傳到github或bitbucket並將以下內容添加到pip下的requirements.txtenvironment.yml
    • git+https://github.com/username/submodule.git#egg=submodule

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM