Используйте другую версию Python с virtualenv
-
20-09-2019 - |
Вопрос
У меня есть система Debian, работающая с Python 2.5.4.Virtualenv у меня установлен правильно, все работает нормально.Есть ли возможность использовать виртуальную среду с другой версией Python?
Я скомпилировал Python 2.6.2 и хотел бы использовать его с виртуальными средами.Достаточно ли перезаписать двоичный файл?Или мне нужно что-то изменить в отношении библиотек?
Решение
Просто используйте --python
(или коротко -p
) при создании экземпляра virtualenv, чтобы указать исполняемый файл Python, который вы хотите использовать, например:
virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>
Н.Б.Для Питон 3.3 или позже, обратитесь к The Aelfinn's отвечать ниже.
Другие советы
ОБНОВЛЯТЬ: Для Python3.6 ниже pyvenv
скрипт устарел.Вместо, Документы Python предлагают создание виртуальной среды с помощью следующей команды:
python3 -m venv <myenvname>
Для python3 (3.3+) используйте либо описанный выше метод, либо сценарий pyvenv
команда.
pyvenv /path/to/new/virtual/environment
Обратите внимание, что venv
не позволяет создавать virtualenv с другими версиями Python.Для этого установите и используйте virtualenv
упаковка.
Это шаги, когда вы находитесь в среде общего хостинга и вам необходимо установить и скомпилировать Python из исходного кода, а затем создать venv из вашей версии Python.Для Python 2.7.9 вы должны сделать что-то вроде этого:
mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install
виртуальная среда
cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate
Естественно, это может быть применимо к любой ситуации, когда вы хотите точно воспроизвести ту среду, в которой вы работаете и развертываете.
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
Есть более простой способ,
virtualenv venv --python=python2.7
Благодаря комментарию это работает только в том случае, если у вас установлен Python2.7 на системном уровне (например./usr/bin/python2.7).
В противном случае, если вы используете доморощенный вариант, вы можете использовать путь, чтобы получить то, что вы хотите.
virtualenv venv --python=/usr/local/bin/python
Вы можете найти путь к вашей установке Python с помощью
which python
Это также будет работать с Python 3.
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
В конечном итоге сгущается до:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
Под Windows у меня это работает:
virtualenv --python=c:\Python25\python.exe envname
без python.exe
я получил WindowsError: [Error 5] Access is denied
У меня установлен Python2.7.1 с virtualenv 1.6.1, и мне нужен Python 2.5.2.
Mac OSX 10.6.8 (Снежный барс):
1) Когда ты это делаешь pip install virtualenv
, команда pip связана с одной из ваших версий Python, и virtualenv
устанавливается в эту версию Python.Ты можешь сделать
$ which pip
чтобы узнать, какая это версия Python.Если вы видите что-то вроде:
$ which pip
/usr/local/bin/pip
затем сделайте:
$ ls -al /usr/local/bin/pip
lrwxrwxr-x 1 root admin 65 Apr 10 2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
Вы можете увидеть версию Python в выводе.
По умолчанию это будет версия Python, которая используется для любой новой среды, которую вы создаете.Однако вы можете указать любую версию Python, установленную на вашем компьютере, для использования в новой среде с помощью команды -p flag
:
$ virtualenv -p python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3.2
New python executable in my_env/bin/python
Installing setuptools, pip...done.
virtualenv my_env
Создаст папку в текущем каталоге, которая будет содержать исполняемые файлы Python, и копию PIP [команды], которую вы можете использовать для установки других пакетов.
http://docs.python-guide.org/en/latest/dev/virtualenvs/
virtualenv
просто копирует Python из места на вашем компьютере во вновь созданный каталог my_env/bin/.
2) Системный питон находится в /usr/bin
, в то время как различные версии Python, которые я установил, по умолчанию были установлены в:
/usr/local/bin
3) Различные установленные мной питоны имеют такие имена, как python2.7
или python3.2
, и я могу использовать эти имена, а не полные пути.
========ВИРТУАЛЬНАЯ ОБЕРКА =========
1) У меня возникли проблемы с работой virtualenvwrapper.Вот что я в итоге вставил ~/.bash_profile
:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects #Not very important -- mkproject command uses this
#Added the following based on:
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh
2) -p option
работает по-другому с virtualenvwrapper:Мне нужно указать полный путь к интерпретатору Python, который будет использоваться в новой среде (если я не хочу использовать версию Python по умолчанию):
$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate
removes the 'bin' directory of the environment activated with 'source
activate' from PATH.
В отличие от virtualenv, virtualenvwrapper создаст среду в месте, указанном переменной среды $WORKON_HOME.Это позволяет хранить все ваши среды в одном месте.
Предположим, что в вашей виртуальной среде установлен Python 2.7.Но хочу воспользоваться python3.2
, Вам придется обновить это с помощью:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
Затем активируйте свой виртуальное окружение к:
$ source activate name_of_your_virtualenv
а затем сделайте: python --version
в оболочке, чтобы проверить, обновлена ли ваша версия.
Эти две команды должны работать нормально.
virtualenv -p python2 myenv
(Для Python2)
virtualenv -p python3 myenv
(Для Python3)
Вы можете позвонить virtualenv
с нужной версией Python.Например:
python3 -m virtualenv venv
Или, альтернативно, напрямую укажите путь к вашему виртуальному окружению.напримердля окон:
c:\Python34\Scripts\virtualenv.exe venv
И запустив:
venv/bin/python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
вы можете увидеть версию Python, установленную в виртуальной среде
А -p
подход работает хорошо, но вам нужно не забывать использовать его каждый раз.Если ваша цель — перейти на более новую версию Python в целом, это неприятно и может привести к ошибкам.
Другой вариант — установить переменную среды, которая делает то же самое, что и -p
.Установите это через свой ~/.bashrc
файл или где бы вы ни управляли переменными среды для сеансов входа в систему:
export VIRTUALENV_PYTHON=/path/to/desired/version
Затем virtualenv
буду использовать это в любое время, когда вы не укажете -p
в командной строке.
Для Mac (High Sierra) установите virtualenv на python3 и создайте virtualenv для python2:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
Еще проще, используя подстановку команд, чтобы найти python2:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
Или при использовании virtualenvwrapper:
mkvirtualenv -p $(which python2) <env_name>
На Mac я использую pyenv и virtualenvwrapper.Мне пришлось создать новый virtualenv.Вам нужен доморощенный продукт, который, я предполагаю, вы установили, если у вас Mac, но просто для развлечения:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}
Я также сначала заморозил свои требования, чтобы можно было просто переустановить новую виртуальную среду с помощью:
pip install -r requirements.txt
В подсистеме Windows для Linux:
Создайте среду для python3:
virtualenv --python=/usr/bin/python3 env
Активируйте его:
source env/bin/activate
Да, приведенные выше ответы верны и отлично работают в системах на базе Unix, таких как Линукс & MAC OS X.
Я пытался создать виртуальное окружение для Питон2 & Python3 с помощью следующих команд.
Здесь я использовал венв2 & венв3 как их имена для Питон2 & Python3 соответственно.
Питон2 »
MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate easy_install pip2.7 python2.7
activate.csh easy_install-2.7 python wheel
activate.fish pip python-config
activate_this.py pip2 python2
MacBook-Pro-2:~ admin$
Питон3 »
MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate easy_install pip3.6 python3.6
activate.csh easy_install-3.6 python wheel
activate.fish pip python-config
activate_this.py pip3 python3
MacBook-Pro-2:~ admin$
Проверка мест установки Python
MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$
Это сработало для меня
sudo apt-get install python3-minimal
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
На окнах:
py -3.4x32 -m venv venv34
или
py -2.6.2 -m venv venv26
При этом используется py
пусковая установка который найдет для вас подходящий исполняемый файл Python (при условии, что он у вас установлен).
virtualenv -p python3 myenv
Для систем Debian (debian 9) в 2019 году я нашел простое решение, которое может решить проблему изнутри виртуальной среды.
Предположим, виртуальная среда была создана с помощью:
python3.7 -m venv myenv
но имеет только версии python2
и python2.7
, и вам нужны последние возможности python3.7.
Затем просто запустив команду:
(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
добавит пакеты python3.7, если они уже доступны в вашей системе.
Это была ошибка с virtualenv.Простое обновление вашего пипа должно быть исправлением.
pip install --upgrade virtualenv
У меня это сработало в Windows с установкой Python 2:
- Шаг 1:Установите версию Python 3.
- Шаг 2:Создайте папку ENV для виртуальной среды.
- Шаг 3 :C: python37 python -m venv c: path to env.
Вот как я создал виртуальную среду Python 3 в существующей установке Python 2.
я использую pyenv для управления моей версией Python.
pyenv install 3.7.3
pyenv local 3.7.3
Проверьте свою версию Python:
$ python --version
Python 3.7.3
Создайте виртуальную среду с помощью венв:
python -m venv .
Затем активируйте виртуальную среду:
source bin/activate
Проверьте свою версию Python:
$ python --version
Python 3.7.3
Возможно, вам придется удалить предыдущую виртуальную среду.
rm -rf bin
Вы можете сделать это, выполнив следующие действия:
virtualenv -p python3 .
Да, вам просто нужно установить другую версию Python и определить местоположение другой версии Python в вашей команде, например:
virtualenv /home/payroll/Documents/env -p /usr/bin/python3
Вот пошаговая инструкция по созданию виртуальной среды в папке кода Visual Studio:Я использовал Powershell (режим администратора):
1.Я создаю папку VSCode — «D:\Code_Python_VE», в которой хочу создать виртуальную среду.
2.Далее я набираю команду — «pip3 install virtualenv».(D: code_python_ve> pip3 установить virtualenv) 3.D:\Code_Python_VE> python3 -m venv project_env
4.D:\Code_Python_VE>project_env\Scripts\activate.bat
5.D:\Code_Python_VE> ls — будет указан новый каталог «project_env».
6.D:\Code_Python_VE> код.Это запустит код Visual Studio.Убедитесь, что команда (код .).
7.Создайте файл launch.jason со следующим содержимым:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "python",
"request": "launch",
"name": "Python: Current File (Integrated Terminal 1)",
"program": "${file}"
},
{
"name": "Python: Current File (Integrated Terminal 2)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
]
}
(Пожалуйста, найдите, как перейти в окно отладки и добавить новую конфигурацию в VS Code).
- Нажмите F1 в коде Visual Studio, и откроется панель команд. Выберите Python Interpreter и выберите виртуальную среду project_env.
- Добавьте файл test.py с одним оператором print("Hello World").
- Запустите эту программу.
- В терминале кода Visual Studio -
(project_env) d:\Code_Python_VE>python -m pip install --upgrade
Надеюсь, это поможет.