Проект Django в Heroku не может установить зависимости с помощью pip - PullRequest
2 голосов
/ 10 марта 2012

Я пытаюсь развернуть проект Django на Heroku. Я использую virtualenv и pip для управления зависимостями. Версия virtualenv - 1.7.1, а с ним - 1.1. Я попытался форсировать --no-site-packages, но он подсказывает, что сейчас это поведение по умолчанию. Также я уверен, что я устанавливаю все в виртуальной среде. Проект Django пуст. Я следовал инструкциям здесь . Может быть, проблема в том, что их версии pip и virtualenv старше? Кто-нибудь сталкивался с этой проблемой? Заранее спасибо.

ψ pip.exe freeze
Django==1.3.1
distribute==0.6.24
versiontools==1.8.3
(venv)

ψ more .\requirements.txt
Django==1.3.1
distribute==0.6.24
versiontools==1.8.3

(venv)

ψ git push heroku master
Enter passphrase for key '/c/Program Files (x86)/Vim/.ssh/id_rsa':
Counting objects: 12, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (12/12), 3.30 KiB, done.
Total 12 (delta 2), reused 0 (delta 0)

-----> Heroku receiving push
-----> Python/Django app detected
-----> Preparing virtualenv version 1.7
       New python executable in ./bin/python
       Installing distribute.............................................................................................................................................................................................done.
       Installing pip...............done.
-----> Activating virtualenv
-----> Installing dependencies using pip version 1.0.2
       Exception:
       Traceback (most recent call last):
         File "/tmp/build_k6zl66ydgqxp/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/basecommand.py", line 126, in main
           self.run(options, args)
         File "/tmp/build_k6zl66ydgqxp/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/commands/install.py", line 200, in run
           for req in parse_requirements(filename, finder=finder, options=options):
         File "/tmp/build_k6zl66ydgqxp/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/req.py", line 1255, in parse_requirements
           req = InstallRequirement.from_line(line, comes_from)
         File "/tmp/build_k6zl66ydgqxp/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/req.py", line 82, in from_line
           elif os.path.isdir(path) and (os.path.sep in name or name.startswith('.')):
         File "/tmp/build_k6zl66ydgqxp/lib/python2.7/genericpath.py", line 41, in isdir
           st = os.stat(s)
       TypeError: must be encoded string without NULL bytes, not str

       Storing complete log in /app/.pip/pip.log
 !     Heroku push rejected, failed to compile Python/django app

1 Ответ

7 голосов
/ 11 марта 2012

Кажется, проблема в том, что это в файле require.txt, я создал его с помощью powershell и команды "pip.exe freeze> needs.txt", который создает файл с именем, в котором есть нуль-байты. Мне удалось обойти эту проблему, загрузив файл require.txt из примера проекта на github и изменив его. Это сделало работу, и все работает хорошо.

...