2014-11-26 4 views
2

У меня есть приложение django, работающее под управлением python 3.4, и я хочу использовать рис, чтобы помочь настроить докеры для компонентов моего приложения. Когда я бегу fig up я получаю следующее сообщение об ошибке:Fig Python 3 Совместим?

Recreating app_db_1... 
Recreating app_search_1... 
Creating app_web_1... 
Traceback (most recent call last): 
    File "/usr/local/Cellar/fig/1.0.1/libexec/bin/fig", line 9, in <module> 
    load_entry_point('fig==1.0.1', 'console_scripts', 'fig')() 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/cli/main.py", line 31, in main 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/cli/docopt_command.py", line 21, in sys_dispatch 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/cli/command.py", line 28, in dispatch 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/cli/docopt_command.py", line 24, in dispatch 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/cli/command.py", line 56, in perform_command 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/cli/main.py", line 427, in up 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/project.py", line 174, in up 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/service.py", line 199, in recreate_containers 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/service.py", line 176, in create_container 
    File "/usr/local/Cellar/fig/1.0.1/lib/python2.7/site-packages/fig-1.0.1-py2.7.egg/fig/service.py", line 370, in _get_container_create_options 
TypeError: unhashable type: 'dict' 

Является ли это из-за несовместимости с Python 3? То есть есть ли способ, которым я могу использовать фигу, чтобы помочь создать мое приложение, или мне не повезло? Рис был установлен с использованием доморощенного.

Вот мой рисунок файла:

db: 
    image: kartoza/postgis 
web: 
    build: . 
    command: python manage.py runserver:8000 
    volumes: 
     - .:/code 
    ports: 
     - "8000:8000" 
    links: 
     - db 
     - search 
    environment: 
     - ALLOWED_HOSTS: 
     - STRIPE_CLIENT_ID: 
     - STRIPE_CLIENT_SECRET: 
     - GOOGLE_API_KEY: 
search: 
    image: dockerfile/elasticsearch 
    links: 
     - db 
+1

Я не знаком с фиг, но, похоже, они [проверяют свой код с помощью Python 3] (https://github.com/docker/fig/blob/master/tox.ini), поэтому я не думаю это проблема Python 3. Ошибка, конечно, не похожа на типичную проблему совместимости с Python-3. –

ответ

6

Оказывается, проблема была не в версии Python, а в файле fig.

Файл рисунка не должен иметь тире перед переменными окружающей среды. Исправленный файл инжир выглядит следующим образом:

db: 
    image: kartoza/postgis 
web: 
    build: . 
    command: python manage.py runserver:8000 
    volumes: 
     - .:/code 
    ports: 
     - "8000:8000" 
    links: 
     - db 
     - search 
    environment: 
     ALLOWED_HOSTS: 
     STRIPE_CLIENT_ID: 
     STRIPE_CLIENT_SECRET: 
     GOOGLE_API_KEY: 
search: 
    image: dockerfile/elasticsearch 
    links: 
     - db 

Инжир инструмент, написанный на Python 2.7, и не доступны в различных Python 3, но это не означает, что она несовместима с Python 3-х проектов, потому что это не интегрированный в код проекта. Это отдельный инструмент и запускается сам по python 2.7.

0

Имя пакета содержит подсказку: fig-1.0.1-py2.7.egg

Кажется, вы установили версию Python 2 на рис. Попробуйте установить с pip install fig из среды Python 3.

+0

Насколько я могу судить, у фига есть только версия Python 2 – rfj001

+0

@ rfj001: no, * Homebrew * предлагает только версию Python 2. Библиотека может быть установлена ​​в Python 3 просто отлично. –

+0

@ rfj001: Вот почему я сказал: «Установите его вручную, используя« pip ». 'pip' получит правильную версию для вашей версии Python (или попытается преобразовать ее, если существует только версия Python 2.7). –

Смежные вопросы