Não é possível clonar Python venv para outro PC
Eu quero clonar meu venv existente para outro PC, mas simplesmente copiar e colar não está funcionando. Quando eu copio o venv e colo na segunda máquina e executo
lista de pip
Ele apenas lista pip e setup_tools como as dependências instaladas. Tentei outra maneira de clonar os pacotes. Criei um novo venv na segunda máquina e copiei todo o arquivo do primeiro venv para esse novo venv, ignorando os arquivos existentes com o mesmo nome no novo venv. Agora, quando eu corro
lista de pip
Ele mostra todas as dependências, mas, quando tento iniciar o notebook jupyter como
caderno jupyter
Ele dá o seguinte erro.
Erro fatal no inicializador: Não é possível criar o processo usando '"f: \ caminho \ para \ first_venv \ on_first_machine \ scripts \ python.exe" "C: \ path \ to \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe" notebook': O sistema não pode encontrar o arquivo especificado.
Não sei como fazer as coisas funcionarem. Por favor ajude!
Editar
O problema é que não tenho conexão com a Internet na segunda máquina. Na verdade é uma máquina remota com alguns protocolos de segurança aplicados e não ter conexão com a internet faz parte da segurança! Foi mal :'(
Respostas
Você não pode copiar e colar venvs de uma máquina para outra, pois os scripts neles podem se referir a locais do sistema. (O mesmo significa tentar mover venvs dentro de uma máquina.)
Em vez disso, recrie o ambiente na nova máquina:
- Na máquina antiga, execute
pip freeze -l > packages.txtno virtualenv. - Passe
packages.txtpara a nova máquina. - Crie um novo virtualenv na nova máquina e entre nele.
- Instalar os pacotes do arquivo txt:
pip install -r packages.txt.
EDITAR: se você não tiver acesso à Internet na segunda máquina, continue a partir da etapa 2 com:
- Execute
pip wheel -w wheels -r packages.txtno venv na primeira máquina. Isso irá baixar e construir*.whlpacotes para todos os pacotes de que você precisa. Observe que isso assume que as duas máquinas são semelhantes em sistema operacional e arquitetura! - Copie os arquivos da roda para a nova máquina.
- Crie um novo virtualenv na nova máquina e entre nele.
- Instalar os pacotes de rodas no novo virtualenv:
pip install *.whl.
Você nunca deve copiar um ambiente virtual entre máquinas. A maneira correta é exportar as dependências instaladas no ambiente utilizando pip freezee criar um novo ambiente virtual na outra máquina.
# One the first machine
pip freeze > requirements.txt
# Copy requirements.txt to the other machine, or store in a source repository
# Then install the requirements in the new virtual environment
pip install -r requirements.txt