#php #python #python-3.x #composer-php #virtualenv
#php #питон #python-3.x #композитор-php #virtualenv
Вопрос:
Я использую composer
для своего проекта, и весь проект (даже vendor
папка) находится под контролем версий git.
Я знаю, что это может показаться ложным действием, но у меня дефицит пропускной способности, и я хочу снизить использование полосы пропускания, поэтому я использую этот метод, чтобы просто скопировать vendor
папку.
Когда я нажимаю на другой репозиторий и пытаюсь запустить php main.php
оттуда, он говорит, что не может найти классы, которые я там использую.
Мне удалось решить эту проблему, удалив всю vendor
папку и запустив заново composer i
, но это не то поведение, которое я хочу. Я хочу использовать низкую пропускную способность, я не хочу ждать установки пакета.
Я использую тот же метод для virtualenv
приложений на python, и возникает та же проблема, но эту проблему можно решить, просто запустив virtualenv venv/
снова, чтобы исправить новые пути для скопированной среды. Как я могу добиться такого же поведения с composer
помощью? Я не вижу никакой информации или команды, которые могут помочь мне в этом.
Заранее спасибо, ребята 🙂
Комментарии:
1. Какова версия вашего композитора? Вы скопировали заполненную папку «Поставщик»?
2. попробуйте composer dump-автозагрузку в оболочке после извлечения из git
3. @UsamaAyaz да, в моем локальном репозитории я нажимаю
composer i
, и создается полнаяvendor
папка. Затем я отправляю все файлы (vendor/
мои php-файлы) на удаленный. Я хочу иметь возможность исправить этуvendor
папку, а не устанавливать ееcomposer.json
заново.4. Да, я полностью понял ваше требование, заключающееся в том, чтобы сохранить папку поставщика в VCS, и вы не хотите снова устанавливать зависимости. Вы должны попробовать «composer dump-автозагрузка», который восстановит файл автозагрузки без повторной загрузки зависимостей.
5. Я пробовал это, но там написано
Generated autoload files containing 0 classes
, что проблема все еще существует.
Ответ №1:
Найдено решение.
Все, что вам нужно сделать, это удалить один файл и одну папку:
rm -rf vendor/composer;
rm vendor/autoload.php;
Затем запустите composer i
, и он снова воссоздаст удаленную composer
папку и исправит файлы автозагрузки.
Хорошего дня.
Комментарии:
1. В этом случае вам придется снова переустановить пакеты, наоборот, вы попросили другой вариант, кроме этого.
2. Нет, он не будет загружаться. Я протестировал его с отключенным подключением к Интернету. Он просто проверяет, существует ли какая-то конкретная зависимость, и не будет загружать ее снова. Просто проверяет это. Кстати, спасибо за ваше время.