将 virtualenvwrapper 环境从 ubuntu 转移到 windows
transfer virtualenvwrapper environment from ubuntu to windows
我在 ubuntu 中从事过具有多个虚拟环境的不同项目。
我有 virtualenvwrapper 并用经典的 mkvirtualenv <envname>
命令做到了。
在我的系统上我也有 windows,我想在这个 os 上检索我的环境。
我通过 pip 安装了 virtualenvwrapper-win 包,并将我的 WORKON_HOME 环境变量设置在与我的 ubuntu 系统相同的位置。
现在 windows,workon 命令的输出如下:
(base) C:\Users\mathi>workon
Pass a name to activate one of the following virtualenvs:
==============================================================================
caps_env
dashex
media
PMALL36
但是当我尝试激活其中一个环境时,我得到:
(base) C:\Users\mathi>workon PMALL36
D:\Informatique\virtual_environments\PMALL36
doesn't contain a virtualenv (yet).
Create it with "mkvirtualenv PMALL36"
有什么线索吗?
linux 和 windows 之间的 virtualenvs 布局不同,python 可执行文件和所有用 C 编写并加载为共享库的模块也是如此。任何第三方包如果不是纯粹的 Python 模块都会有问题,即使它们安装在不同的位置,例如在 windows:
F:\> workon test1
(test1) F:\> cdvirtualenv
(test1) c:\srv\venv\test1> cdsitepackages
(test1) c:\srv\venv\test1\Lib\site-packages>
和Ubuntu:
deployer@linoidbc:~$ workon test1
(test1) deployer@linoidbc:~$ cdvirtualenv
(test1) deployer@linoidbc:/srv/venv/test1$ cdsitepackages
(test1) deployer@linoidbc:/srv/venv/test1/lib/python2.7/site-packages$
我猜你已经从 linux 创建了 virtualenv,它在 $VIRTUAL_ENV/bin/activate
中激活并且当 virtualenvwrapper-win 在 %VIRTUAL_ENV%\Scripts\activate.bat
:
if not exist "%WORKON_HOME%\%VENV%\Scripts\activate.bat" (
echo.
echo. %WORKON_HOME%\%VENV%
echo. doesn't contain a virtualenv ^(yet^).
echo. Create it with "mkvirtualenv %VENV%"
goto END
)
您应该创建一个共享(项目)目录,与您的 virtualenvs 分开。您需要创建两个 virtualenvs,一个用于 linux,一个用于 windows,并将它们连接到项目目录。我相信你应该能够做到这一点:
mkvirtualenv -a /path/to/project/dir mylinux_venv
和
mkvirtualenv -a \path\to\project\dir mywin_venv
将您的 requirements.txt 文件放在项目目录中,并在您更改要求时使用来自两个 virtualenvs 的 pip install -U -r requirements.txt
。
项目目录自动添加到对应virtualenv的路径中,cdproject
命令将目录切换到它。
我在 ubuntu 中从事过具有多个虚拟环境的不同项目。
我有 virtualenvwrapper 并用经典的 mkvirtualenv <envname>
命令做到了。
在我的系统上我也有 windows,我想在这个 os 上检索我的环境。 我通过 pip 安装了 virtualenvwrapper-win 包,并将我的 WORKON_HOME 环境变量设置在与我的 ubuntu 系统相同的位置。
现在 windows,workon 命令的输出如下:
(base) C:\Users\mathi>workon
Pass a name to activate one of the following virtualenvs:
==============================================================================
caps_env
dashex
media
PMALL36
但是当我尝试激活其中一个环境时,我得到:
(base) C:\Users\mathi>workon PMALL36
D:\Informatique\virtual_environments\PMALL36
doesn't contain a virtualenv (yet).
Create it with "mkvirtualenv PMALL36"
有什么线索吗?
linux 和 windows 之间的 virtualenvs 布局不同,python 可执行文件和所有用 C 编写并加载为共享库的模块也是如此。任何第三方包如果不是纯粹的 Python 模块都会有问题,即使它们安装在不同的位置,例如在 windows:
F:\> workon test1
(test1) F:\> cdvirtualenv
(test1) c:\srv\venv\test1> cdsitepackages
(test1) c:\srv\venv\test1\Lib\site-packages>
和Ubuntu:
deployer@linoidbc:~$ workon test1
(test1) deployer@linoidbc:~$ cdvirtualenv
(test1) deployer@linoidbc:/srv/venv/test1$ cdsitepackages
(test1) deployer@linoidbc:/srv/venv/test1/lib/python2.7/site-packages$
我猜你已经从 linux 创建了 virtualenv,它在 $VIRTUAL_ENV/bin/activate
中激活并且当 virtualenvwrapper-win 在 %VIRTUAL_ENV%\Scripts\activate.bat
:
if not exist "%WORKON_HOME%\%VENV%\Scripts\activate.bat" (
echo.
echo. %WORKON_HOME%\%VENV%
echo. doesn't contain a virtualenv ^(yet^).
echo. Create it with "mkvirtualenv %VENV%"
goto END
)
您应该创建一个共享(项目)目录,与您的 virtualenvs 分开。您需要创建两个 virtualenvs,一个用于 linux,一个用于 windows,并将它们连接到项目目录。我相信你应该能够做到这一点:
mkvirtualenv -a /path/to/project/dir mylinux_venv
和
mkvirtualenv -a \path\to\project\dir mywin_venv
将您的 requirements.txt 文件放在项目目录中,并在您更改要求时使用来自两个 virtualenvs 的 pip install -U -r requirements.txt
。
项目目录自动添加到对应virtualenv的路径中,cdproject
命令将目录切换到它。