2014-04-20 3 views
5

Я пытаюсь развернуть мое первое примерное приложение с Django/Heroku с помощью учебника по началу работы с Django/Heroku.Развертывание Django/Python 3.4 для Heroku

Мои инструменты: Python 3.4 и Windows 7 PowerShell.

Мой вызов: развертывание в Heroku терпит неудачу, и я не уверен, почему. После моего первого «git push» я увидел, что по умолчанию используется python-2.7.0. Затем я добавил файл runtime.txt (python-3.4.0) в корень приложения.

Вот что происходит, когда я бегу git push heroku master

-----> Python app detected 
-----> Preparing Python runtime (python-3.4.0) 
-----> Installing Setuptools (2.1) 
-----> Installing Pip (1.5.4) 
-----> Installing dependencies using Pip (1.5.4) 
Exception: 
Traceback (most recent call last): 
    File "/app/.heroku/python/lib/python3.4/site-packages/pip-1.5.4-py3.4.egg/pip/basecommand.py", line 122, in main 
     status = self.run(options, args) 
    File "/app/.heroku/python/lib/python3.4/site-packages/pip-1.5.4-py3.4.egg/pip/commands/install.py", line 262, in run 
     for req in parse_requirements(filename, finder=finder, options=options, session=session): 
    File "/app/.heroku/python/lib/python3.4/site-packages/pip-1.5.4-py3.4.egg/pip/req.py", line 1546, in parse_requirements 
     session=session, 
    File "/app/.heroku/python/lib/python3.4/site-packages/pip-1.5.4-py3.4.egg/pip/download.py", line 275, in get_file_content 
     content = f.read() 
    File "/app/.heroku/python/lib/python3.4/codecs.py", line 313, in decode 

    (result, consumed) = self._buffer_decode(data, self.errors, final) 
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 

     Storing debug log for failure in /app/.pip/pip.log 

!  Push rejected, failed to compile Python app 

Вот содержание моего requirements.txt файла (созданного с pip freeze > requirements.txt)

Django==1.6.2 
dj-database-url==0.3.0 
dj-static==0.0.5 
django-toolbelt==0.0.1 
gunicorn==18.0 
psycopg2==2.5.2 
pystache==0.5.3 
static==1.0.2 

Вот мой Procfile (кстати: gunicorn кажется Unix «только» и не работает для Windows; read here):

web: gunicorn mytodo.wsgi 

В учебнике Heroku не упоминается файл setup.py, but it seems that one is necessary, поэтому я просто скопировал шаблон ... не мое предпочтительное решение, но я не знал, что еще делать.

setup(
    name='mysite', 
    version='0.1.0', 
    install_requires=[], # Don't put anything here, just use requirements.txt 
    packages=['mysite'], 
    package_dir={'mysite': 'src/mysite'}, 
) 

Что может быть происходит: - Сообщение об ошибке юникода может вытекать из Procfile. Где-то в Интернете я читал, что это должен быть файл ASCII, но я не уверен, как объявить это, поскольку в Procfile нет файла, заканчивающегося. - Файл setup.py неверен.

Любая помощь приветствуется. Благодаря!

+0

Так вам удалось это сделать в конце? – speedyGonzales

+0

Нет ... к сожалению нет. – raummensch

ответ

3

Я столкнулся с этой точной проблемой во время моей собственной попытки развернуть приложение Django в Heroku в Windows 7. Причина оказалась такой: команда pip freeze >requirements.txt кодирует файл в формате UTF-16. Heroku ожидает, что требования .txt будут ansi-encoded.

Чтобы исправить это, я открыл файл требований.txt в Блокноте, перешел в файл-> Сохранить как и установил кодировку в ANSI перед сохранением снова. После git-commit нового требования.txt мне удалось запустить git push heroku master, и он работал, как ожидалось.

1

Попробуйте удалить static == 1.0.2 с сайта требований.txt. Он не играет хорошо с python 3.4. Однако он будет правильно установлен через dj-static. Это работает для меня:

Django==1.5.1 
dj-database-url==0.2.2 
dj-static==0.0.5 
gunicorn==18.0 
psycopg2==2.5.1 
+0

Я внес свои изменения, но все равно получаю то же сообщение об ошибке. Жаль, я надеялся, что это будет трюк. Тем не менее, я только что видел, последняя строка сообщения об ошибке читается: '! [remote reject] master -> (pre-receive hook отклонен) Ошибка: не удалось выполнить некоторые ссылки на «git-APPNAME» PS: Приложения для моего отложенного ответа. – raummensch

0

Я не эксперт, но посмотрите на этом блоге о развертывании на Heroku из машины Windows. Надеюсь, поможет. http://www.swarley.me.uk/blog/2014/02/24/create-a-django-development-environment-on-64-bit-windows-for-heroku-deployment/

обновление: хорошо, я думаю, у меня есть лучший ответ. Во-первых, Heroku утверждают, что у пользователей Windows будут проблемы, которые не будут у пользователей Linux и iOS: https://devcenter.heroku.com/articles/bundler-windows-gemfile В статье рассказывается о Ruby, но те же проблемы будут применяться и к другим языкам, потому что они говорят о том, с какой ОС вы работаете.

Однако это решение сработало для меня: используйте Bitbucket как ваш удаленный репозиторий и загружайте его с вашей машины Windows. Затем из Bitbucket загрузите в Heroku. Здесь очень похожий вопрос и ответ здесь на SO: Deploying to Heroku using git on bitbucket

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