Перенос проекта Django + React на новый компьютер в автономной среде без переустановки зависимостей
У меня есть полностековый проект Django и React, который мне нужно перенести на новый компьютер в полностью автономной среде. Моя текущая настройка включает:
- Django backend с пользовательским приложением
- React frontend
- Виртуальная среда
- Специфические требования к зависимостям
Структура проекта:
development/
├── .git/
├── .gitignore
├── backend/
│ ├── app/
│ ├── db/
│ ├── manage.py
│ └── myproject/
├── frontend/
│ ├── node_modules/
│ ├── package.json
│ ├── package-lock.json
│ ├── public/
│ └── src/
├── initial_data.py
├── packages/
├── README.md
├── requirements.txt
└── venv/
Задачи
Управление зависимостями
- Отсутствие доступа в интернет для установки pip или npm
- Потенциальная несовместимость бинарных файлов с конкретной системой
- Сохранение точных версий пакетов
Окружающая среда Размножение
- Настройка виртуальной среды
- Совместимость версий Python и Node.js
- Зависимости нативных библиотек
Текущие попытки
Я пробовал:
Прямое копирование всего каталога проекта
Ручная установка требований из файла requirements.txt
Использование pip и npm для установки пакетов
Неизменно эти методы терпят неудачу по следующим причинам:
Отсутствуют системные библиотеки
Конфликты версий
Двоичная несовместимость
Специальные вопросы
- Как упаковать все зависимости проекта для передачи в автономном режиме?
- Какой самый надежный метод воспроизведения среды разработки?
- Существуют ли инструменты, позволяющие создать полный снимок проекта, который можно перенести?
Подробные сведения об окружающей среде
Бэкенд: Django 5.0.6
Фронтенд: React (на основе package.json)
Python: 3.12.4
Операционная система: Windows 11
Предложенные решения Попытка
- PyInstaller для создания автономного исполняемого файла
- Ручной перенос виртуальной среды
- Исчерпывающие требования и файлы пакетов
Требования к идеальному решению
Настройка нулевой конфигурации на новом компьютере
Сохранение точных версий зависимостей
Поддержка автономной среды
Минимальное ручное вмешательство
Бонусные очки: Скрипт или метод, который может:
Проверка совместимости среды
Автоматическая установка зависимостей
Обработка специфических для системы вариаций
Код/конфигурационные фрагменты
requirements.txt:
altgraph==0.17.4
asgiref==3.8.1
Django==5.0.6
django-cors-headers==4.4.0
djangorestframework==3.15.2
djangorestframework-simplejwt==5.3.1
MouseInfo==0.1.3
packaging==24.1
pefile==2023.2.7
pillow==10.4.0
PyAutoGUI==0.9.54
PyGetWindow==0.0.9
pyinstaller==6.10.0
pyinstaller-hooks-contrib==2024.8
PyJWT==2.8.0
PyMsgBox==1.0.9
pyperclip==1.9.0
PyRect==0.2.0
PyScreeze==1.0.1
pytweening==1.2.0
pywin32-ctypes==0.2.3
setuptools==72.2.0
sqlparse==0.5.0
tk==0.1.0
tzdata==2024.1
wheel==0.45.1
package.json:
{
"name": "frontend",
"version": "0.1.0",
"private": true,
"dependencies": {
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
"@mui/icons-material": "^5.15.21",
"@mui/material": "^5.15.21",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"axios": "^1.7.2",
"framer-motion": "^11.14.4",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-intersection-observer": "^9.14.0",
"react-router-dom": "^6.24.0",
"react-scripts": "5.0.1",
"react-transition-group": "^4.4.5",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"proxy": "http://localhost:8000",
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11"
}
}
Ограничения
- Отсутствие доступа в Интернет на новом компьютере
- Возможные различия в версиях ОС (сомнительно)
- Необходимо поддерживать рабочий процесс разработки
Заранее спасибо! 😊