Python3 환경에서 빌드 시 에러는 나지 않지만, arcus.sh 명령 수행 시 에러가 발생한다.
[jam2in@docker-desktop scripts]$ ./arcus.sh zookeeper init
Traceback (most recent call last):
File "/home/jam2in/arcus/scripts/fab", line 11, in <module>
load_entry_point('fabric==2.5.0', 'console_scripts', 'fab')()
File "/home/jam2in/arcus/lib/python/site-packages/invoke-1.4.1-py3.6.egg/invoke/program.py", line 373, in run
self.parse_collection()
File "/home/jam2in/arcus/lib/python/site-packages/invoke-1.4.1-py3.6.egg/invoke/program.py", line 465, in parse_collection
self.load_collection()
File "/home/jam2in/arcus/lib/python/site-packages/fabric-2.5.0-py3.6.egg/fabric/main.py", line 87, in load_collection
super(Fab, self).load_collection()
File "/home/jam2in/arcus/lib/python/site-packages/invoke-1.4.1-py3.6.egg/invoke/program.py", line 696, in load_collection
module, parent = loader.load(coll_name)
File "/home/jam2in/arcus/lib/python/site-packages/invoke-1.4.1-py3.6.egg/invoke/loader.py", line 76, in load
module = imp.load_module(name, fd, path, desc)
File "/usr/lib64/python3.6/imp.py", line 235, in load_module
return load_source(name, filename, file)
File "/usr/lib64/python3.6/imp.py", line 172, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 684, in _load
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 674, in exec_module
File "<frozen importlib._bootstrap_external>", line 781, in get_code
File "<frozen importlib._bootstrap_external>", line 741, in source_to_code
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/jam2in/arcus/scripts/fabfile.py", line 135
print destination, os.path.isfile(destination)
^
SyntaxError: invalid syntax
현재 fabfile.py 에서 fabric 1.x version api를 사용하고 있는데,
from fabric.api import *
from fabric.colors import *
from fabric.contrib.files import *
from fabric.contrib.project import *
from fabric.task_utils import merge
python3 환경에서 사용할 수 있는 fabric version 은 2.0 이상을 요구하기 때문에 fabric 2.0 api 를 사용하도록 변경해야 한다. 하지만 fabric 2.0 이상부터는 python 2.6을 지원하지 않아 python 2.6 환경에서 arcus를 사용하고 있는 곳이 있기 때문에 이 작업을 진행하기에 제한사항이 있다.
Python3 환경에서 빌드 시 에러는 나지 않지만, arcus.sh 명령 수행 시 에러가 발생한다.
현재 fabfile.py 에서 fabric 1.x version api를 사용하고 있는데,
fabric version 2.0 이후로 위 api 들은 사라지거나 다른 api로 변경되었다. 참고 : https://github.com/fabric/fabric/tree/2.0/fabric https://github.com/fabric/fabric/tree/1.14/fabric
python3 환경에서 사용할 수 있는 fabric version 은 2.0 이상을 요구하기 때문에 fabric 2.0 api 를 사용하도록 변경해야 한다. 하지만 fabric 2.0 이상부터는 python 2.6을 지원하지 않아 python 2.6 환경에서 arcus를 사용하고 있는 곳이 있기 때문에 이 작업을 진행하기에 제한사항이 있다.
최소 python 2.6 이상 & 3 모두 지원할 수 있는 방안 탐색이 필요하다.