将 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命令将目录切换到它。