문제

메신저 Supervisor를 사용하여 일부 파이썬 응용 프로그램을 모니터링하는 Solaris 서버를 실행합니다.

이전에는 명령을 실행할 수 있습니다.

paster serve /opt/pyapps/menuadmin/prod.ini
. 서버의 모든 디렉토리에서

.최근 몇 가지 문제가 있었고 이전 백업에서 / opt 폴더가 복원되었습니다.이 폴더에는 감독자를 비롯한 모든 응용 프로그램이 포함되어 있습니다.

이제 우리는 상사가 "버전 충돌"으로 인해 상사가 응용 프로그램을 시작하지 않을 것입니다.

이것은 이상한 곳이며 이러한 오류가 발생하는 이유는 무엇이 필요하지 않습니다.

프로그램 디렉토리 외부에서 paster 명령을 실행하면 버전 충돌 오류가 발생합니다.예 :

cd /
paster serve /opt/pyapps/menuadmin/prod.ini
Traceback (most recent call last):
  File "/opt/csw/bin/paster", line 8, in <module>
    load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
  File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 93, in run
    commands = get_commands()
  File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 135, in get_commands
    plugins = pluginlib.resolve_plugins(plugins)
  File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/pluginlib.py", line 82, in resolve_plugins
    pkg_resources.require(plugin)
  File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 626, in require
  File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 528, in resolve
pkg_resources.VersionConflict: (Pylons 0.9.7 (/opt/csw/lib/python2.6/site-packages/Pylons-0.9.7-py2.6.egg), Requirement.parse('Pylons>=0.10'))
.

그러나 프로그램 디렉토리 내부에서 명령을 실행하면 잘 실행됩니다.예 :

cd /opt/pyapps/menuadmin/
paster serve /opt/pyapps/menuadmin/prod.ini
Starting server in PID 29902.
serving on http://127.0.0.1:3002
.

나는 왜 이것이 일어날 지 주위에 내 머리를 얻을 수 없다!

모든 생각이나 의견은 전혀 평가됩니다 !!!!

도움이 되었습니까?

해결책

당신이 한 것으로 말한 것을 바탕으로 두 개의 다른 버전의 Paster를 실행하는 것 같습니다.첫 번째 버전은 이전의 Pylons 패키지를 0.9.7로 실행 중이며 두 번째는 앱 요구 사항을 충족하거나 초과하는 최신 버전이 많을 수 있습니다.

내가 할 일은 먼저 어떤 PATER가 실행 중인지를 점검합니다.프로젝트의 외부에서 실행됩니다 :

which paster
. 그런 다음 프로젝트 디렉토리에서 동일한 명령을 다시 실행하고 결과를 비교하십시오.나는 경로가 다르다는 것을 알게 될 것으로 의심합니다.이 경우 첫 번째 버전의 Pylons 버전을 업데이트하는 것입니다. 추측하는 것은 전역 설치입니다.

다른 사람들이 virtualenv 내에서 앱을 실행하는 것이 더 낫습니다. 특히 여러 개의 VirtualEnv와 여러 프로젝트를 나타내는 것처럼 보입니다.내가 원래이 작업을 수행하지 않은 누군가에게서 나중에 두통의로드에서 당신을 구할 것이라고 말할 때 나를 믿으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top