比方说,我有一个包含两个项目的脚本,每个项目都有其anaconda环境及其包。例如,项目1所需的软件包在env1中,而项目2所需的软件包在env2中。 当然,当我需要运行project1时,我会为project2激活源激活env1,反之亦然。 现在,在我的Python脚本中,在env1中,我需要运行project2,如下所示:
source activate env1
python project1.py
project1.py:
import libraries_for_project1
from file_for_project2 import ClassProject2
#project1 stuff
ClassProject2.somemethod() #project2 stuff
#project1 stuff
我想做的是更改(或在上面激活)python脚本本身内的env2。 我尝试过:
import libraries_for_project1
from file_for_project2 import ClassProject2
import os
import subprocess
#project1 stuff
subprocess.run("bash -c 'source activate ~/anaconda3/envs/env2'", shell=True)
print(os.environ['CONDA_DEFAULT_ENV']) #this return env1
ClassProject2.somemethod() #this cause errors because of some packages are not installed in env1
subprocess.run("bash -c 'source deactivate'", shell=True)
print(os.environ['CONDA_DEFAULT_ENV'])
#project1 stuff
您有什么建议吗? (当然我不能在env1中安装env2的库)
答案 0 :(得分:0)
为项目模块化并创建一个单独的文件/文件夹。问题是当您在一个环境中工作并且想要从另一环境开始执行代码的某些部分时,这是不可能的,因为从头开始执行。
示例:
import pandas
pandas.import_csv('something.csv')
# Start using the second environment
## Code to be executed using another environment
## Write this code as a separate file
## Write code to execute that file using environment 2
# After Completion of execution
# Continue your code which doesn't require environment 2