Я искал ответ в StackOverflow, но большинство из них не решают всю мою задачу.
У меня есть программное обеспечение cellprofiler, которое работает с собственным графическим интерфейсом и работает в среде conda в Ubuntu.
Я хочу автоматизировать внешний запуск этого cellprofiler с помощью другого скрипта Python.
Мои шаги:
1) Я создаю bash-скрипт на python, который запускает среду и программное обеспечение:
env_activate = 'path_to_sh/activate_env.sh'
with open(env_activate, 'w') as f:
f.write('#!/bin/sh\n')
f.write('. activate cellprofiler && cellprofiler')
f.close()
2) В моем скрипте на python я делаю:
processCP = subprocess.Popen(env_activate, stdout=subprocess.PIPE)
processCP.wait()
но это приводит к запуску его в системном интерпретаторе python 3.5, а не в среде conda
Traceback (most recent call last):
File "/home/**/.local/bin/cellprofiler", line 6, in <module>
from pkg_resources import load_entry_point
File "/home/**/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3126, in <module>
@_call_aside
File "/home/**/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3110, in _call_aside
f(*args, **kwargs)
File "/home/**/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3139, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/home/**/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 581, in _build_master
ws.require(__requires__)
File "/home/**/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 898, in require
needed = self.resolve(parse_requirements(requirements))
File "/home/**/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 784, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'CellProfiler' distribution was not found and is required by the application
Кто-нибудь знает, почему это происходит?
UPDATE:
Мне нужен интерпретатор python python2.7, который уже находится в среде conda. Cellprofiler работает правильно, если вызывать его в терминале, например:
source activate cellprofiler
cellprofiler