Скопируйте полный virtualenv на другой компьютер
У меня есть virtualenv
расположенный в /home/user/virtualenvs/Environment
. Теперь мне нужна эта среда на другом ПК. Поэтому я установил virtualenv-clone
и использовал его для клонирования /Environment
. Затем я скопировал его на другой компьютер через USB. Я могу активировать его при source activate
, но когда я пытаюсь запустить интерпретатор python с помощью sudo./Environment/bin/python
я получаю
./bin/python: 1: ./bin/python: Syntax Error: "(" unexpected
Выполнение этого без sudo дает мне ошибку, сообщая мне, что в формате двоичных файлов есть ошибка. Но как это может быть? Я просто скопировал его. Или есть лучший способ сделать это? Я не могу просто использовать pip freeze
на /Environment/lib/python2.7/site-packages/
потому что в /Environment/lib/python2.7/site-packages/
есть некоторые пакеты, которые я написал сам, и мне тоже нужно их скопировать. Насколько я понимаю, pip freeze
просто создает список пакетов, которые pip загружает и устанавливает.
Ответы
Ответ 1
Выполните следующие действия на исходном компьютере:
- workon [environment_name]
- замораживание pip> needs.txt
- скопировать файл require.txt на другой компьютер
На другом ПК:
- создать виртуальную среду с помощью mkvirtualenv [имя_среды]
- workon [environment_name]
- pip install -r needs.txt
Вы должны быть сделаны.
Другие ресурсы:
Ответ 2
Я думаю, что происходит то, что вы просто копируете символические ссылки в исходном файле на целевой компьютер в виде двоичных файлов (больше не ссылок). Вы должны скопировать его с помощью rsync -l
для копирования, чтобы сохранить эти ссылки.
Ответ 3
Обычно я использую virtualenv для создания новой среды, затем захожу в среду, из которой хочу скопировать, копирую все папки и вставляю ее в папку среды, которую я только что создал, но самое главное, когда спрашиваю, хотите ли вы заменить место назначения файлы, выберите пропустить эти файлы. Таким образом вы сохраните свои настройки.
По крайней мере, для меня это сработало очень хорошо.
Я надеюсь, что это работает и для вас.