Pip не устанавливает пакеты для активации virtualenv, игнорирует require.txt

Я пытаюсь настроить среду разработки на своей новой машине dev дома. Я только что установил Ubuntu, и теперь я пытаюсь клонировать удаленное репо с нашего веб-сервера и устанавливать его зависимости, чтобы я мог начать работу.

До сих пор я вручную установил virtualenv и virtualenvwrapper из pypi и соответствующим образом отредактировал свой bash.rc, чтобы загрузить мои виртуальные файлы, когда я запускаю свой терминал. Затем я клонировал свое репо на ~/projects/project-name/websitename.com. Затем я использовал virtualenvwrapper до mkvirtualenv env-name от ~/projects/project-name/websitename.com. Это точно отражает file-structure/setup веб-сервера, с которого я клонирую. Все идет нормально.

Я зашел в сервер dev и активировал virtualenv там и использовал pip freeze -l > req.txt, чтобы отобразить список зависимостей и scp на моем локальном компьютере. Я активирую virtualenv на своем локальном компьютере, перейдите к ~/projects/project-name/websitename.com и выполните pip install -r path-to-req.txt, и он пробежит все зависимости, как будто ничего не случилось. Однако, когда я пытаюсь выполнить manage.py syncdb, я получаю сообщение об ошибке, не обнаруживающей базовые пакеты django. Какого черта? Так что я как-то не смог установить Django, я run pip install Django==1.5.1 и успешно завершает работу. Я должен снова настроить свой сайт и получить еще одну ошибку об отсутствии модуля с именем django_extensions. Ладно, что, черт возьми, я только что установил все эти пакеты с пипсом?!

Итак, я pip freeze -l > test.txt и cat test.txt, что он перечисляет? Django==1.5.1, тот пакет, который я только что установил вручную. Почему не pip устанавливает мои зависимости из моего указанного списка в мой virtualenv? Что я здесь испортил?

-Edit -------------

Какой пип дает мне путь к pip в моем virtualenv

У меня есть только 1 virtualenv и он активирован

Ответ 1

Мой обычный рабочий процесс -

pip freeze > someFile.txt

а затем установите с помощью

pip install -r someFile.txt

Итак, я уверен, что это должно работать нормально. К сожалению, я не могу вам ничего сказать, кроме того, убедитесь, что

  • Вы действительно находитесь в виртуальном пространстве, в котором вы думаете, что находитесь. Убедитесь, что вы запустите

    workon yourVirtualEnvName
    

    чтобы активировать его на всякий случай.

  • Убедитесь, что пип находится в вашем виртуальном каталоге.

    which pip
    

    дает мне

    /path/to/home/.virtualenvs/myVirtEnv/bin/pip
    

Извините, я не могу дать вам более конкретного ответа. Я должен делать это полу-регулярно, и у меня никогда не было проблем с этим пропуском зависимостей. Удачи!

Ответ 2

Не так давно побеседовал с некоторыми вариантами этого вопроса; он оказался моим загроможденным файлом .bash_profile.

Убедитесь, что у вас нет ничего, что могло бы испортить ваш virtualenv внутри вашего .bash_profile/.bashrc, например переменные среды $VIRTUAL_ENV или $PYTHONHOME или $PYTHONPATH.

Ответ 3

Я знаю, что это старый пост, но я столкнулся с подобной проблемой. В моем случае причина заключалась в том, что я запускал команду pip install, используя sudo. Это заставило команду запускаться глобально и пакеты устанавливались на глобальном пути python.

Надеюсь, что кто-то поможет.